持续更新······
sql语句不分大小写,但是建议关键词大写
注释
单行注释:
①-- 注释内容:两个横杠一个空格,空格不可省,后面加注释内容
②#注释内容:
多行注释:
/*注释 */
数据库的操作
show databases; -- 查看数据库
创建数据库
create database if not exists db1; -- 创建数据库db1
使用数据库
use db1; -- 使用数据库db1
表的操作
show tables; -- 查看某数据库中所有表名称
如果该表不存在创建表
name姓名字段:数据类型为varcahr(32),长度为32
age年龄字段:数据类型为int
中间同···
score 分数字段:数据类型为double,长度为4,保留1位小数
create table if not exists stu (
name varchar(32),
age int,
gender varchar(2),
score double(4,1)
);
复制表
create table stu1 like stu; -- stu1表复制stu表
查询表结构
desc stu; -- 查询stu表结构
查询表中所有数据
select * from stu; -- 查询stu表中所有数据
修改表名
alter table stu1 rename to stu2; -- 修改stu1的表名为stu2
修改表字符集
alter table stu2 character set utf8; -- 修改表字符集为utf8
在表中添加一列
alter table stu2 add birthday date; -- 在stu2中添加一列birthday,数据类型为date
修改列名
alter table stu2 change gender sex varchar(2); -- 修改stu2表的gender列名为sex
修改某列的数据类型
alter table stu2 modify sex varchar(20); -- 修改stu2表中sex列的数据类型
删除某列
alter table stu2 drop sex; -- 删除stu2表中的sex列
删除表
drop table if exists stu2; -- 如果表stu2存在,删除stu2表
DML增删改表中的数据
添加数据
INSERT INTO stu2(name,age,gender,score) VALUES('张三',18,'男',100); -- 列名和值要一一对应
不写列名,就默认给所有列添加值,但是可以给不想添加那列的值赋值为NULL
INSERT INTO stu2 VALUES('李四',20,'女',100);
删除数据
DELETE FROM stu2 WHERE name = '张三'; -- 删除姓名为张三的那行数据
删除表,然后创建一个一样的空表
TRUNCATE TABLE stu2;
修改数据
UPDATE stu2 SET age = 20 WHERE name='张三'; -- 修改张三的年龄为20
命令行数据库备份和还原
备份格式为:mysqldump -u用户名 -p密码 数据库名 > 保存的路径
mysqldump -u用户名 -p密码 db1 > d://a.sql -- 备份db1数据库到d盘根目录
还原:(得先备份)
先删除数据库db1
drop database db1;
创建数据库
create database db1;
use db1;
source D:\\a.sql -- source后面跟备份文件的目录
事务
START TRANSACTTON; -- 开启事务方式一
BEGIN; -- 开启事务方式二
COMMIT; -- 提交事务
ROLLBACK; -- 回滚事务
四大特征:原子性、持久性、隔离性、一致性
查看事物的默认提交方式:
SELECT @@autocommit; -- 1代表自动提交,0代表手动提交
DCL用户管理授权
1.切换到mysql数据库
USE mysql;
2.查询user表
SELECT * FROM USER;
创建用户:
CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;
CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY '123';
CREATE USER 'lisi'@'%' IDENTIFIED BY '密码'; -- 表示在任意主机使用用户登录数据库
删除用户
DROP USER ‘用户名’@‘主机名’;
DROP USER 'zhangsan'@'localhost';
修改密码:
方式一:
UPDATE USER SET PASSWORD = PASSWORD(‘新密码’) WHERE USER = ‘用户名’;
UPDATE USER SET PASSWORD = PASSWORD('456') WHERE USER = 'lisi';
方式二:
SET PASSWORD FOR ‘用户名’@‘主机名’ = PASSWORD(‘新密码’);
SET PASSWORD FOR 'lisi'@'%' = PASSWORD('456');
查询权限:
SHOW GRANTS FOR ‘用户名’@‘主机名’;
SHOW GRANTS FOR 'lisi'@'%';
授予权限
GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@‘主机名’;
GRANT SELECT,DELETE,UPDATE ON db1.stu TO 'lisi'@'%';
GRANT ALL ON *.* TO 'lisi'@'%'; -- 授权所有权限,在任意数据库,任意表
撤回权限:
REVOKE 权限列表 ON 数据库名.表名 FROM ''用户名@‘主机名’;
REVOKE SELECT,DELETE,UPDATE ON db1.stu FROM db1.stu 'lisi'@'%';
持续更新······