教程地址:视频
mysql8更新内容
[mysql登陆]
mysql -u=username,root, -p=password
查看已经新建完毕的建表语句:show create table tableName;
mysql -uroot -p
[退出]
exit
逻辑流程:先有库,再有表,最后操作数据
1库2表3数据
删库和删表都是DROP DATABASE+库名/ DROP TABLE+表名,删除数据是DELETE FROM
[创建库]DDL
创建数据库,经常手滑少个s
CREATE DATABASE IF NOT EXISTS xxx;
创建数据库,指定编码集
CREATE DATABASE xxx CHARACTER SET 字符集;
检查所有数据库;---别忘记s
SHOW DATABASES;
查看一个已经建立的数据库的编码结构
SHOW CREATE DATABASE xxx;
修改库,改字符集
ALTER DATABASE xxx DEFAULT CHARACTER SET utf-8;
删除数据库,库=DROP
DROP DATABASE xxx;
[如何操作表,使用数据库]
查看正在使用的数据库...
SELECT DATABASE();
使用,切换数据库
USE xxx;
DDL操作表,前提条件先使用库。
创建表:
CREATE TABLE 表名 (字段1 类型1,字段2 类型2);
CREATE TABLE student (id int UNSIGNED KEY AUTO_INCREMENT , username VARCHAR(20) NOT NULL UNIQUE , age TINYINT, email VARCHAR(30) NOT NULL UNIQUE ,birthday DATE, sex CHAR(1));
查看所有表:别少s
SHOW TABLES;
查看表的结构,内含多少字段;
DESC table_name;
查看建表的SQL语句:
SHOW CREATE TABLE xxx;
快速创建一个表结构一摸一样的新表:
CREATE TABLE 新表XX LIKE 旧表XX;
删除表:库和表都是drop
DROP TABLE 表xxx;
判断表是否存在,再删除表:有S
DROP TABLE IF EXISTS 表xx;
修改表结构,不怎么常用,忘记了回来查
ALTER ADD 表xx ADD 列名 类型;
少+了个字段,需要额外加入
万一类型长度不够用了,如何修改?
ALTER TABLE 表xx MODIFY 列名 新类型;
改列名
ALTER TABLE 表xx CHANGE 旧列名 新列名 类型;
删除列:
ALTER TABLE 表xx DROP 列名;
修改表明
RENAME TABLE 表xx TO 新表名;
DML操作数据的语句
库已有,表已有,现在就对数据进行,INSERT INTO, DELETE UPDATE
插入字段,别忘记s,除了数字,其他需要单引号''
INSERT INTO table_name (字段1,字段2,字段3...) VALUES(值1,值2,值3);
INSERT INTO table_name VALUES (值1,值2,值3);
INSERT INTO student VALUES (1,'张三',18,'1990-01-01','男');
查询表结构是
DESC table_name;
查询表内的数据
SELECT * FROM table_name;
数据蠕虫复制(后面是数据源)
CREATE TABLE table_name LIKE 旧表;
INSERT INTO table_name SELECT * FROM 旧表;
更新表中的记录
1不带条件,修改数据
UPDATE table_name SET 字段名=值;
2带条件,修改数据
UPDATE table_name SET 字段名=值 WHERE 指定条件;
UPDATE student SET name='李四' WHERE id=1;
删除表中的记录
1不带条件,删除数据
DELETE FROM table_name;=删库跑路,一行一行删,自动
TRUNCATE TABLE table_name;=删库跑路,摧毁整个表
2带条件,删除数据
DELETE FROM table_name WHERE 指定条件;
DELETE FROM student2 WHERE id = 1;
[DQL查询],SELECT WHERE
别名查询
SELECT 字段1 AS 别名,字段2 AS 别名...FROM 表名;
SELECT NAME AS 姓名, age AS 年龄 FROM student2;
清除表内重复值
SELECT DISTINCT 字段名 FROM 表名;
参加运算
比较运算符
逻辑运算符3个
AND 多个条件同时满足
OR 多个条件,只满足其中一个
NOT 不满足
IN关键字,NOT IN
SELECT 字段名 FROM 表名 WHERE 字段 in(数据1,数据2,数据3);
SELECT * FROM student WHERE id in(001,004,010);查询id是001或004或010的数据
=SELECT * FROM student WHERE id=001 OR id=004 OR id= 010;
SELECT * FROM student WHERE id NOT IN(001,004,010);查询id不是001或004或010的数据
范围
BETWEEN
&&
SELECT * FROM hero WHERE grounding_date BETWEEN '2020-01-01' AND '2020-01-31';
=SELECT * FROM hero WHERE grounding_date >='2020-01-01' AND grounding_date <= '2020-01-31';
模糊查询LIKE
LIKE
%LIKE
LIKE%
%LIKE%
排序
ORDER BY
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 ASC|DESC;
组合排序
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 ASC|DESC ,字段2 ASC|DESC;
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 ASC ,字段2 DESC;
聚合函数
COUNT,统计记录数,null不统计在内
SUM,和
MAX,最大值
MIN最小值
AVG平均值
分组,相同的数据为一组。一般分组后会和聚合函数一起使用。
SELECT 字段1,字段2...FROM 表名 GROUP BY 分组字段 HAVING 条件;
HAVING是分组后,对数据进行过滤。
WHERE是分组前,对数据进行过滤。
HAVING后可以使用聚合函数。
WHERE后不可以使用聚合函数。
LIMIT语句
SELECT * FROM student3 LIMIT 2,6;跳过前面2跳数据,显示6条
数据库约束
PRIMARY KEY主键,唯一,不可以为NULL,一般设置ID为主键
UNIQUE唯一
NOT NULL非空
DEFAULT默认
FOREIGN KEY外键
删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
主键自增,字段类型必需是int整型
AUTO_INCREMENT
【多表联查】
[内链接]
SELECT 字段名称,...FROM tbl_name1 INNER JOIN tbl_name2 ON 连接条件;
让数据库去控制,输入录入的时间问题
NOW()推荐
CURDATE()
CURTIME()