1.创建数据库db_classics;
mysql> create database if not exists db_classics default charset=utf8mb4;
2.创建表
create table if not exists t_hero(
id int primary key auto_increment,
name varchar(20) not null unique,
nickname varchar(50) default '无',
age int check(age>=0) default null,
address varchar(40) default '未知',
job char(20) default '无',
weapon char(20)
)engine=innodb charset=utf8mb4;
通过alter添加三个新的字段:
mysql> alter table t_hero add sex varchar(5) check(sex in('男','女')) default '男';
mysql> alter table t_hero add team varchar(10);
mysql> alter table t_hero add hhh char(50);
通过alter删除一个字段:
mysql> alter table t_hero drop hhh;
重命名一张表:
mysql> alter table t_test rename t_hero;
3.插入相应的数据:
mysql> insert into t_hero values(null,'红孩儿',"三昧炎王",13500,'火焰山','火焰少主','火尖枪','男','火焰山');
结果:
mysql> select * from t_hero;
+----+--------------+-----------------+-------+-----------------------+-----------------------+--------------------+------+-----------+
| id | name | nickname | age | address | job | weapon | sex | team |
+----+--------------+-----------------+-------+-----------------------+-----------------------+--------------------+------+-----------+
| 1 | 张百川 | 玉皇大帝 | 20000 | 天庭宫殿 | 天庭老总 | 断界仙剑 | 男 | 天庭 |
| 2 | 叶凡 | 太上老君 | 25000 | 天庭丹殿 | 天庭丹帝 | 紫宝混沌葫芦 | 男 | 天庭 |
| 3 | 张千山 | 帝子 | 5000 | 天庭宫殿 | 天庭中将军 | 灭世仙刀 | 男 | 天庭 |
| 4 | 消炎 | 焱帝 | 11000 | 天庭焱军部 | 天庭焱军总都督 | 噬浪尺 | 男 | 天庭 |
| 5 | 金保 | 暗金血王 | 1000 | 天庭焱军部 | 天庭焱军上将 | 嗜血刀 | 男 | 天庭 |
| 6 | 紫萱 | 紫悦仙子 | 900 | 天庭紫薇主神殿 | 天庭紫薇君主 | 九凤来仪萧 | 女 | 天庭 |
| 7 | 孙悟空 | 齐天大圣 | 1000 | 花果山 | 花果山大王 | 如意金箍棒 | 男 | 花果山 |
| 8 | 黑熊王 | 袈裟黑圣熊 | 1400 | 花果山 | 花果山东郡主 | 鬼头大斧 | 男 | 花果山 |
| 9 | 金鹏王 | 金鹏大圣 | 2400 | 花果山 | 花果山西郡主 | 嗜吴金翅 | 男 | 花果山 |
| 10 | 紫霞 | 紫霞仙子 | 1000 | 花果山 | 花果山北郡主 | 紫霞宝剑 | 男 | 花果山 |
| 11 | 玄奘 | 慈悲大佛 | 1000 | 花果山 | 花果山南郡主 | 金刚杵 | 男 | 花果山 |
| 12 | 法老猴长 | NULL | 500 | 花果山 | 花果山总管家 | 智慧书 | 男 | 花果山 |
| 13 | 牛魔王 | 界下妖帝 | 22500 | 火焰山 | 火焰山家主 | 裂天开山斧 | 男 | 火焰山 |
| 14 | 牛夫人 | 万妖主母 | 23500 | 火焰山 | 火焰山夫人 | 芭蕉扇 | 女 | 火焰山 |
| 15 | 红孩儿 | 三昧炎王 | 13500 | 火焰山 | 火焰少主 | 火尖枪 | 男 | 火焰山 |
+----+--------------+-----------------+-------+-----------------------+-----------------------+--------------------+------+-----------+
15 rows in set (0.00 sec)
一些简单的mysql 命令
启动服务:net start mysql(服务名称)
停止服务:net stop mysql
登录Mysql:mysql -uroot -p
退出命令:exit,quit,\q
清屏:system cls
刷新命令:flush privileges
帮助命令:help create(想要查询的命令)
查询当前的登录用户:select user();
查看数据库的版本:select version();
查看当前所在数据库:select database();
进入数据库:use 库名;设置账号支持远程登录:
在mysql数据库下面的user表中,修改user表root的hostupdate user set host="%" where user="root"
update user set host="192.168.1.0/24" where user="root";
或者host="192.168.1.%"
host里面可以设置自己想授权的登录用户,可以是一段IP地址
user里面是对应的修改的用户flush privileges 刷新
mysql -uroot -p+所要远程登陆的对象IP地址
mysql -uroot -p192.168.127.2查看命令:show
show databases; 显示库
show tables; 显示表
show 库/表 like "****"; 里面可以用%或_通配符;
show variables; 查看mysql数据库的所有参数,参数太多,可以用like筛选
创建数据库:create database
create database db_cwl; 一般数据库以db_开头
create database db_cwl default charset=utf8mb4; 创建数据库的同时指定编码,utf8mb4才是真正的utf_8
create database if not exists db_cwl default charset=utf8mb4; 如果数据库存在,也不报错,特别适合于写脚本时
show create database db_name; 显示创建数据库的脚步创建表:create table
create table [if not exists] t_name 表名一边以t_开头
( # 声明表的结构的
字段名称 字段类型 [约束条件],
字段名称 字段类型 [约束条件],
字段名称 字段类型 [约束条件],
字段名称 字段类型 [约束条件],
字段名称 字段类型 [约束条件]
)
show create table 表名称; # 显示创建表的脚步删除表或者库:drop
drop database 库名;
drop table 表名;
drop database if exists 库名;
drop table if exists 表名;描述表的结构:
describe 表名称;
desc 表名称;
show columns from t_stu;插入数据
insert into t_stu(字段名称) values(值);
insert into t_stu values; 不写字段,默认给所有字段赋值;查询数据
select * from t_stu;修改表的结构:
修改列的类型和约束条件
alter table 表名 modify 列名 列类型 [约束条件];
增加新的列
alter table 表名 add 新列名 类型 [约束条件]更改列的名称和类型约束
alter table 表名 change 旧列名 新列名 类型 [约束条件]
删除列
alter table 表名 drop 列名;更改表名
alter table 旧表名 rename 新表名;
alter table 旧表名 to 新表名;
复制表结构和复制表数据的操作:
复制表结构,不复制数据
create table 新建表 like 复制表结构对象的表复制表结构同时复制数据
create table 新建表 select * from 被复制对象如果两张表结构一样,可以将一张表的数据复制到另一张表
insert into 表名 select * from 被复制的对象;DCL授权和撤销授权
grant 授权
revoke 回收权限在8.0之后,要先创建用户,在授权
create user '用户名'@'是否远程登陆' identified by '设置密码';
grant 哪些权限 on 哪个数据库.哪张表 to '用户名'@'是否远程登陆'
查看用户的权限
show grants for '用户名'@'地址';DML语句
增删改查
增加insert into
insert into 表名称[(字段1……)] values(值1……);
删除数据delete from(实则没彻底删除)
delete from 表名称 where 条件;
truncate操作(彻底删除)
truncate 表名称
修改 更新 update set
update 表名 set 字段=新值 where 条件;
查询 select
select {* | 字段1 [,……]} from 表名称 [where 条件]
替换 replace into (这张表要有约束)
replace into 表名称[(字段1……)] values(值1……);
mysql 里面可以做运算
+ - * /
SELECT 100+80; # 结果为180
SELECT '123'+80; # 只要其中一个为数值,则试图将字符型转换成数值,结果为203
SELECT 'abc'+80; # 转换不成功,则字符型数值为0,结果为80
SELECT 'This'+'is'; # 转换不成功,结果为0
SELECT NULL+80; # 只要其中一个为NULL,则结果为NULL
SELECT '20a'+80; # 转换成功,则字符型数值为20,结果为100逻辑关系语句
and, or, =, !=, >, <, >=, <=, between and,in
where age=32 and sex='女';
where not (age=32 and sex='女');加上not取反
where age in(30,40,50);表示年龄是30,40,50岁的人查询空值
is null
is not null<=>既可以查询空值,也可以充当=符号
<>于其上一样,相当于!=
sql中的别名使用
select 原名 as 别名,原名 别名 from 表; as可以省略
重复记录
select distinct 列名 from 表名
模糊查询
like "***"; 两个通配符,%匹配随意多的字符,_匹配一个字符;