SQL语言
- Structured Query Language的缩写,及结构话查询语言
- 关系型数据库的标准语言
- 用于维护管理数据库
- 包括数据查询,数据更新,访问控制,对象管理等功能
SQL分类
- DDL:数据定义语言
- DML:数据操控语言
- DQL:数据查询语言
- DCL:数据控制语言
select version (); //查询版本号
show databases; //查询所有数据库
use mysql; //切换至数据库mysql
show tables; //查询mysql数据库有哪些表
基础sql语句
create database kgc; //创建kgc数据库
create database if not exists kgc; //如果kgc数据库不存在就创建kgc数据库
create table kc01 (name varchar(16),age int(11)); //创建kc01表,字段包含名字和年龄(在某数据库中)
create table kgc.kc02 (name varchar(16),age int(11)); //在数据库kgc中创建表kc02(可以不在数据库中)
drop table kgc.kc02; //删除kgc数据库中的kc02表
drop database kgc; //删除数据库kgc
select * from kc01; //查询kc01表中的内容
select user _name,user_passwd from auth.users where user_name='zhangsan';
//查询users表中用户名为zhangsan的记录,显示其中用户名,密码字段的信息
select * from auth.users;
//显示auth数据库中users表的全部内容
delete from auth.users where usser_name='list';
//删除users表中用户名为“lisi”的数据记录
CREATE TABLE kc01 (
id INT(11),
name VARCHAR(16) NOT NULL,
age INT(11)
);
//创建表kc01,且name字段不能为空
describe kgc.kc01; //查询kgc数据库kc01表的结构信息
insert into kgc.kc01 (id,name,age) values(1,"张三",20);
//添加数据把需要的字段全部写上
insert into kgc.kc01 values(1,"张三",20);
//需要全部字段时按照顺序写即可
mysql> select * from kc01;
+------+--------+------+
| id | name | age |
+------+--------+------+
| 1 | 张三 | 20 |
+------+--------+------+
1 row in set (0.00 sec)
//查询全部信息时可能消耗资源较大只需要输入想要看到的字段就可以
select name,age from kgc.kc01;
//只查看kgc数据库kc01表的name和age字段
where子句
//查询符合条件的数据
mysql> select * from kgc.lll where name="张三";
+------+--------+--------+------+
| id | name | nianji | zf |
+------+--------+--------+------+
| 1 | 张三 | 2 | 80 |
+------+--------+--------+------+
//查询name是张三的行
mysql> select * from kgc.lll where nianji=2;
+------+--------+--------+------+
| id | name | nianji | zf |
+------+--------+--------+------+
| 1 | 张三 | 2 | 80 |
| 3 | 王五 | 2 | 85 |
+------+--------+--------+------+
//查询nianji是2的数据
update kgc.lll set zf=78 where id=3; //修改id为3的数据zf变为78
mysql> select * from kgc.lll where id=3;
+------+--------+--------+------+
| id | name | nianji | zf |
+------+--------+--------+------+
| 3 | 王五 | 2 | 78 |
+------+--------+--------+------+
//把id为3的数据zf改为78
UPDATE table_name
SET column1 = new_value1, column2 = new_value2, ...
[WHERE condition];
truncate table lll; //清空lll表,会重置初始id
delete from lll; //清空lll表,不会重置初始id
drop table k2; //删除k2表
delete from lll where id=1; //删除id=1的数据
mysql> select * from kgc.lll;
+------+--------+--------+------+
| id | name | nianji | zf |
+------+--------+--------+------+
| 2 | 李四 | 3 | 87 |
| 3 | 王五 | 2 | 78 |
| 4 | 赵六 | 3 | 68 |
+------+--------+--------+------+
临时表
select * from mytmp; //查看mytmp表是否还存在
CREATE TEMPORARY TABLE `mytmp` (
->`id` int(10) NOT NULL AUTO_INCREMENT,
->`NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-> `level` int(10) NOT NULL,
->PRIMARY KEY (id)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; //创建临时表
insert into mytmp(name,level) values('aa',10); //插入数据
select * from mytmp; //查询mytmp表中的内容
exit //退出mytmp表
//重新链接数据库后再次查询就会消失
克隆表
drop table tmp;
create table tmp as select * from player;
//创建并复制表中内容,把player表中内容复制到tmp中
select count(*) from tmp;
as作为链接操作符,更多用来设置别名,这种操作会把表拷贝过来,但是表的索引和默认值无法复制
方法一
create table test like mytmp; //用LIKE方法,复制mytmp表生成test表
show create table test\G //查看test的表结构
select * from test; //LIKE方法复制表结构不复制表中内容
insert into test select* from mytmp; //将mytmp表的数据写入test表
方法二
//通过创建表的方式客隆表
SHOW CREATE TABLE source_table; //查看表的详细结构
show create table lll\G
复制创建表的语句修改表名即可
CREATE TABLE target_table AS SELECT * FROM source_table WHERE 1 = 0;
//保存与源表的字段顺序一致
CREATE TABLE target_table AS SELECT * FROM source_table;
//复制了表结构和(可选的)数据,但未复制任何触发器、存储过程或其他与源表相关的数据库对象
用户权限设置
select host,user from mysql.user; //查询可以在本地登录的用户
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
grant select on kgc.* to 'zhangsan'@'%' identified by '123'; localhost 192.168.10.% 192.168.10.51
//创建一个名字为张三的用户只能访问kgc数据库,而且可以在任意IP上登录密码为123,登录地址可以为本机、192.168.10.0网段、192.168.10.1主机
flush privileges; //立即刷新MySQL服务器的权限缓存
show grants for 'zhangsan'@'%'; //查询用户所拥有的权限
revoke select on `kgc`.* from 'zhangsan'@'%'; //撤销权限