大二的我开始正式的学习数据库,仅以此文记录我的学习…
1.SQL 指结构化查询语言,全称是 Structured Query Language。
2.使用SQL 可以访问和处理数据库,包括数据插入、查询、更新和删除。
3.SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。
代码如下(示例):
-- 创建一个学校数据库(并且判断了是否已经存在的问题)
CREATE DATABASE IF NOT EXISTS `school`;
切记:SQL 对大小写不敏感:SELECT 与 select 是相同的。为了便于阅读,不建议使用关键字作为字段名、表名,同时,应对数据库名、表名、字段名用一对反引号包含。
代码如下(示例):
-- 创建一个学生表 “字段名 列值类型 是否为空 默认值 注释”
CREATE TABLE `student`(
`id` INT NOT NULL AUTO_INCREMENT COMMENT '学生id',
`name` VARCHAR(20) NOT NULL COMMENT '学生姓名',
`sex` VARCHAR(2) NOT NULL COMMENT '学生性别',
`age` INT(100) NOT NULL COMMENT '学生年龄',
`score` INT(100) NOT NULL COMMENT '学生成绩',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
engine后设置数据库引擎,charset设置字符集。
代码如下(示例):
-- 添加学生数据
INSERT INTO `student` ( `name`, `sex`, `age`, `score` )
VALUES
( '刘一', '男', 23, 67 ),('陈二',男',29,90),('张三','女',43,21 ),
('李四','男',63,12 ),('王五','女',13,53);
现在是时候看看student表长啥样了
代码如下(示例):
SELECT *FROM `student`;
得到这样的结果:
当然了,我们可以在表名前指定查询的列名,在表名后加入判断用来筛选我们需要的数据:
-- 获得name和age列的id在2~5之间的数据
SELECT `name`,`age`FROM `student` WHERE `id` BETWEEN 2 AND 5;
代码去重:SELECT DISTINCT 字段1,字段2… FROM 表名
SELECT DISTINCT `name`,`age` FROM `student`;
-- 结果会显示一个无重复列值的name,age列
让列表进行升序或者降序
-- 让 age 升序排列
SELECT `age` FROM `student` ORDER BY `age` ASC;
-- 可以不加ASC 因为ORDER BY 默认升序
-- 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
同样的多个列排序ORDER BY 列名1 升降序关键字, 列名2 升降序关键字…
关于一些SQL运算符:
运算符 | 含义 |
---|---|
+ - * / | 加减乘除 |
> < <> | 大于 小于 不等于 |
between A and B | 在A和B之间 |
or and | 或者 和 |
like | 搜索某种模式 |
in (a,b,c…) | 在括号内元素中查找 |
更改一个表数据:
UPDATE 表名 SET 列名 = 新值 WHERE 列名称 = 某值
更改多个表数据:
UPDATE 表名 SET 列名1 = 新值1, 列名2 = 新值2,列名3 = 新值3…WHERE 列名称 = 某值
代码如下(示例):
-- 更新name为刘一的值
UPDATE `student` SET `name`='赵六' WHERE `name`='刘一';
语法:
DELETE FROM 表名称 WHERE 列名称 = 值
但是使用DROP :
ALERT TABLE 表名 DROP 字段 也能删除数据
-- 删除筛选条件所在的那一行
DELETE FROM `student` WHERE `score`=12;
DELECT FROM 表名 会删除表里的所有行的内容,但是不会影响表的结构,属性和索引 所以id不会重置
DROP TABLE 表 会彻底删除整个表结构
SQL最最基础的入门操作就此结束.