创建表
USE t_table;
CREATE TABLE t_student;
表的约束(针对于某一列)
- 非空约束:NOT NULL,不允许某一列的内容为空;
- 设置列的默认值:DEFAULT;
- 唯一约束:UNIQUE,在该表中,该列内容必须唯一;
- 主键约束:PRIMARY KEY,非空且唯一;
- 主键自增长:AUTO_ INCREMENT。从1开始,步长为1;
- 外键约束:FOREIGN KEY,A表中的外键列,A表中的外键列的值必须参照与B表中的某一列(B表主键)。
主键设计
- 单字段主键,单列作为主键;(建议)
- 复合主键,使用多列充当主键;
- 主键分为两种:
- 自然主键:使用有业务含义的列作为主键;
- 代理主键:使用没有业务含义的列作为主键。(建议)
DML操作
DML操作都会返回受影响的行数,这次成功操作几条数据
插入语句(一次操作只插入一行)
INSERT INTO 表名(列名1,列名2……)VALUES (值1,值2……);
1.插入完整数据记录
INSERT INTO t_student (id,name,email,age) VALUES (14,'BMY','bmy@',19)
2.插入数据记录一部分
INSERT INTO t_student (name,email,age) VALUES ('DANS','bmy@',19)
INSERT INTO t_student (name,age) VALUES ('TIMI',19)
3.插入多条数据记录
INSERT INTO t_student (name,email,age) VALUES ('A','a@',19),('B','b@',20),('C','c@',25)
4.插入查询结果(测试)
INSERT INTO t_student (name) SELECT name FROM t_student
更新语句
UPDATE 表名 SET 列名1 = 值1,列名2 = 值2…… WHERE[条件]
如果没有WHERE,则修改全表
修改TIMI的名字为LIKE
UPDATE t_student SET name = 'LIKE' WHERE id = 12
修改id为0的学生,名字改为Bobbui,年龄改为19,邮箱改为Bobbui@
UPDATE t_student SET name = 'Bobbui',age = 19,email = 'Bobbui@' WHERE id = 0
删除语句
DELETE FROM t_student WHERE[条件]
简单查询
SELECT 列名1,列名2……
FROM 表名
WHERE 条件
执行顺序:
1.先执行FROM
2.接着执行WHERE,过滤
3.再执行SELECT
表示查询整张表
SELECT * FROM 表名;
去重
SELECT DISTINCT 列名1,列名2…… FROM 表名;
需求:查询所有货品的id,名称和批发价(批发价=卖价*折扣)
SELECT id,productName,slaePrice,cutoff,salePrice * cutOff FROM product
需求:查询所有货品的id,名称,和各进50个的成本价(成本=costPrice)
SELECT id,productName,costPrice * 50 FROM product
需求:查询所有货品的id,名称,各进50个,并且每个运费1元的成本
SELECT id,productName,(costPrice + 1) * 50 FROM product
设置列名的别名
- 改变列的标题头;
- 用于表示计算结果的含义;
- 作为列的别名;
- 如果别名中使用特殊字符或者强制大小写敏感,或者有空格时,都必须加单引号
需求:查询所有货品的id,名称,各进50个,并且每个运费1元的成本
SELECT id AS 货品ID,productName,(costPrice + 1) * 50 FROM product
或者:
SELECT id 货品ID,productName,(costPrice + 1) * 50 FROM product
设置显示格式
SELECT CONCAT(列名1,‘要加的内容’,列名2)FROM 表
过滤查询
比较和逻辑运算符
比较没什么说的,和Java中一样
逻辑运算符:也和Java一样
AND(&&)
OR(||)
NOT(!)
优先级:括号最大
(NOT productName LIKE ‘%M%’ AND salePrice > 100) OR (dir_id = 2)
范围查询
BETWEEN:必须存在一个区间
需求1:选择id,货品名称,零售价在300~400之间的货品
SELECT id,productName,salePrice FROM product
WHERE salePrice >= 300 AND salePrice<=400
或者:
SELECT id,productName,salePrice FROM product
WHERE salePrice BETWEEN 300 AND 400
需求2:选择id,货品名称,零售价不在在300~400之间的货品
SELECT id,productName,salePrice FROM product
WHERE NOT (salePrice >= 300 AND salePrice<=400)
或者:
SELECT id,productName,salePrice FROM product
WHERE salePrice NOT BETWEEN 300 AND 400
IN:选定所选区间,如(2,4)
IS NULL:判断是否为空(不用=)
LIKE:模糊查询
LIKE利用通配符进行模糊查询:
- “_”:必须占据一个字符,任意字符;
- “%”:可以占据0~N个字符,任意字符
比较简单,没什么写的