Mysql数据库管理
SQL语句概述
SQL语言
● Structured Query Language的缩写,即结构化查询语言
● 关系型数据库的标准语言
● 用于维护管理数据库
◆ 包括数据查询、数据更新、访问控制、对象管理等功能
SQL分类
● DDL (Data Definition Language, 数据定义语言) :用来建立数据库、数据库对象和定义字段,如CREATE、ALTER、DROP
● DML (Data Manipulation Language, 数据操纵语言) :用来插入、删除和修改数据库中的数据,如INSERT、UPDATE、DELETE
● DQL (Data Query Language, 数据查询语言) :用来查询数据库中的数据,如SELECT
● DCL (Data Control Language, 数据控制语言) :用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、 GRANT、 REVOKE
DDL
创建新的数据库
mysql >CREATE DATABASE auth;
■ 例:
mysql> CREATE DATABASE zz;
创建新的表
CREATE TABLE 表名 (字段 1 名称类型,字段 2 名称类型,…,PRIMARY KEY (主键名) ) #主键:要求字段里的每个值都是唯一的,意义是快速查找实体的标签
■ 例1:
mysql> use zz; # 使用数据库
mysql> create table uu(user_name char(64) not null primary key,usr_passwd varchar(64)default' ');
mysql> describe uu; # 查看表
■ 例2:
mysql> create table ko(id int(10) auto_increment primary key,age int(3) not null,name varchar(128) not null,score decimal(5));
mysql> desc ko;
修改表结构
新增
mysql> alter table ko add column zzz int(3); #新增一个为zzz的列
mysql> desc ko;
删除
mysql> alter table ko drop column zzz; #删除一个zzz的列
mysql> desc ko;
删除一个数据表
mysql>DROP TABLE auth. users;
■ 例:
mysql> drop table zz.users; #删除zz数据库下的users表
mysql> show tables;
删除一个数据库
mysql>DROP DATABASE auth;
■ 例:
mysql> drop database abc;
mysql> show databases;
克隆表
方法一:
mysql> create table uu2 like uu;
mysql> desc uu2;
mysql> show tables;
方法二:
mysql> show create table cj1\G
例:
mysql> show create table uu\G
DML
插入数据记录
INSERT INTO 表名 (字段 1,字段 2, … )VALUES(字段1的值,字段2的值,…)
mysql>use auth;
mysql> INSERT INTO users (user_name, user_passwd) VALUES(' zhangsan',PASSWORD (' 123456' ));或mysql>INSERT INTO users VALUES('lisi', PASSWORD(' 654321' )) ;
方法一
mysql> insert into uaa(user_name,user_passwd) values('lisi','123456');
mysql> select * from uaa;
方法二
mysql> insert into uaa values('lilei',PASSWORD('123123'));
mysql> select * from users;
插入多个数据记录
mysql> insert into ko(age,name,score,addr) values(17,'zhangsan',60,101),(19,'lilei',75,102),(18,'wanghao',86,103),(17,'zhaozhao',99,104),(18,'liuli',50,105);
mysql> select * from ko;
mysql> desc ko;
修改数据记录
UPDATE 表名 SET 字段名 1=字段值 1[,字段名 2=字段值 2] WHERE 条件表达式
mysql>UPDATE auth. users SET user_passwd=PASSWORD('') WHERE user_name='lisi' ;
mysql>SELECT * FROM auth. users;
例:
mysql> update ko set age=18 where name='zhangsan'; # 必须跟条件where,不然会全部被修改
mysql> select age from ko; #差看age字段
■ 删除数据库记录
DELETE FROM表名WHERE条件表达式
方法一:
mysql>DELETE FROM auth. users WHERE user_name='lisi' ;
mysql>SELECT * FROM auth. users;
例:
mysql> delete from cj1 where name='zhangsan';
mysql> select * from ko;
DQL
查询数据记录
SELECT 字段名 1, 字段名 2,… FROM 表名 WHERE 条件表达式
mysql>select * from auth. users;
mysql>SELECT user_name, user_passwd FROM auth. users WHERE user_name=' zhangsan'
例:
mysql> select name from ko; #查询表中的一个字段
mysql> select name,age from ko; #查询表中的两个字段
DCL
授予权限
GRANT权限列表 ON 数据库名.表名T0 用户名@来源地址[ IDENTIFIED BY ’密码’ ]
mysql>GRANT select ON auth. * T0’ xiaoqi '@' localhost' IDENTIFIED BY '123456' ;
[root@ZZZ~] # mysql -u xiaoqi -p
mysql>SELECT * FROM auth. users; #验证授权的访问操作;
mysql>SELECT * FROM mysql. user; #验证非授权的访问操作
mysql>CREATE DATABASE bdqn;
mysql>GRANT all privileges ON bdqn. * T0 'dbuser' @ '192. 168.4. 19' IDENTIFIED BY 'pwd@123' ;
例:
授予用户wanghao本地查看所有库所有表权限
[root@server1 ~]# mysql -uroot -p123456
mysql> grant select on *.* to 'wanghao'@'localhost' identified by '123456';
mysql> flush privileges; #刷新权限,授予权限后一般要刷新
查看权限
SHOW GRANTS FOR用户名@来源地址
mysql>SHOW GRANTS FOR 'dbuser' @ '192. 168.4. 19' ;
例:
mysql> exit
[root@mysql1 ~]# mysql -uwanghao -p123456
mysql> show grants for 'root'@'localhost';
■ 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址
mysql>REVOKE all privileges ON auth. * FROM 'xiaoqi' @ 'localhost' ;
mysql>SH0W GRANTS FOR 'xiaoqi' @ 'localhost' ; #确认已撤销对auth库的权限
例:
撤销wanghao的查看权限
mysql> revoke select on *.* from 'wanghao'@'localhost';
mysql> flush privileges; #刷新权限
mysql> show grants for 'wanghao'@'localhost'; #查看wanghao的本地权限
查看数据库结构
查看数据库信息
SHOW DATABASES
char与varchar区别
char的长度是不可变的,而varchar的长度是可变的
● 字段b:类型char(10),值为: abc,存储为: abc (abc+7个空格)
● 字段d:类型varchar(10),值为: abc,存储为: abc(自动变为3个的长度)
超出长度自动截取
● 字段c:类型char(3), 值为: abcdefg,存储为: abc (defg自动删除)
● 字段e:类型varchar(3),值为: abcdefg,存储为: abc (defg自动删除)
varchar(10)和char(10),都表示可存10个字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放10个
char最多可以存放255个字符,varchar的最大长度为65535个字节,varchar可存放的字符数跟编码有关
● 字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766个字符
● 字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845个字符
注:
● 一个汉字占多少长度与编码有关;
● UTF-8:一个汉字=3个字节
● GBK:一个汉字=2个字节nn
修改默认存储引擎
查看存储引擎
mysql> show engines;
修改默认存储引擎
mysql> alter table user_info engine=MyISAM;
vim my.cnf
default-storage-engine=InnoDB
mysql> create table engineTest(id int) engine=MyISAM;