mysql数据库的增删改查
mysql数据库的增删改查
1.mysql接口自带功能
msyq>\h:查看帮助信息
1、\h 或 help 或 ?
2、\G:分组显示结果
3、\T 或 tee:将结果和命令输出到文本
4、\c 或 CTRL+c:清除当前语句
5、\s 或 status:获取MySQL服务器状态信息
6、\. 或 source:执行外部SQL脚本:二进制日志截取、备份出来的SQL脚本
7、\u 或use:切换数据库
2.sql服务端命令
2.1 sql种类
DDL:数据库(对象)定义语言
DCL:数据库控制语言(grant revoke)
DML:数据(行)操作语言(update delete insert)
DQL: 数据查询语言(show、select)
2.1.1 DDL操作之管理库操作
查看数据库
mysql> show databases;
mysql> show databases like 'test%'; #==>模糊查询,以test开头的数据库
创建数据库
mysql> create database oldboy;
查看建库的语句
show create database oldboy\G
指定字符集建库
mysql>create database llf CHARACTER SET utf8 ;
mysql>show create database llf;
查看帮助
mysql>help create database;
删除数据库
mysql> drop database llf;
改变库的字符集
mysql> alter database oldboy charset utf8mb4;
mysql> show create database oldboy;
切库
user oldboy
查看当前所在的库
select database();
查看当前的用户
select user();
查看库里的表
show tables;
DDL&&DCL语句之管理用户
用户:
‘user’@‘主机域’
帮助:
? Account Management
常用命令:
1.查看当前用户
2.创建用户
3.查看用户对应的权限
4.删除用户
5.给用户授权
6.收回权限
7.工作博客授权
2.1.2 DDL语句之管理表操作
创建表
create table <表名> (<字段名1> <类型1> ,…<字段名n> <类型n>);
mysql> create table t1(id int,name varchar(20));
获取帮助
help create table;
查询表
mysql> show tables;
查看建表语句
mysql> show create table t1\G
查看表结构
mysql> desc t1;
删除表
mysql> drop table t1;
修改表
在表中添加一列
mysql> alter table t1 add age int;
添加多列
mysql> alter table t1 add sid int,add bridate datetime;
在指定列后添加一列
mysql> alter table t1 add i_name varchar(20) after name;
在表中最前添加一列
mysql> alter table t1 add num int first;
删除列
mysql> alter table t1 drop num;
修改列名
mysql> alter table t1 change name stu_name varchar(20);
修改列属性
mysql> alter table t1 modify sid varchar(20);
修改表名
mysql> rename table t1 to t2;
mysql> alter table t2 rename to t1;
2.1.3 DML语句之管理表内容操作
插入内容(insert)
insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
mysql> insert into t2 values(1,'zhang');
添加多行内容
mysql> insert into t2 values(2,'yang'),(3,'li'),(4,'yi');
通过列名添加内容
mysql> insert into t2(name) values("zhangggg");
查询表内容
mysql> select * from t2;
更新表(update)
mysql> update t2 set name='zhang123' where id=4;
删除表内容
mysql> delete from t2 where id=4;
删除表中所有行,比较危险。一行一行删除表中数据。
mysql> delete from t2;
在物理上删除表数据,速度比较快。
mysql> truncate table t1;
2.1.4 DQL语句之管理表内容操作
select基本查询
SELECT * FROM city;
SELECT NAME,Population FROM city;
select条件查询where
SELECT *|{[DISTINCT] column|select_expr[alias], ...]}[FROM [database.]table][WHERE conditions];
WHERE条件又叫做过滤条件,它从FROM子句的中间结果中去掉所有条件conditions不为TRUE(而为FALSE或者NULL)的行
WHERE子句跟在FROM子句后面
不能在WHERE子句中使用列别名
where字句的基本使用
1、查询中国(CHN)所有的城市信息
SELECT * FROM world.`city` WHERE CountryCode='CHN';
or
SELECT * FROM world.`city` WHERE CountryCode='chn';
2、查询中国(CHN)安徽省所有的城市信息。
SELECT * FROM city WHERE CountryCode="CHN" AND District="anhui";
3、查询世界上人口数量在10w-20w城市信息
SELECT * FROM city WHERE Population BETWEEN 100000 AND 200000;
4、中国或者日本的所有城市信息
SELECT * FROM city WHERE CountryCode IN ('chn',"jpn");
注意:
WHERE中出现的字符串和日期字面量必须使用引号括起来
这里,字符串字面量写成大写或小写结果都一样,即不区分大小写进行查询。
这和ORACLE不同,ORACLE中WHERE条件中的字面量是区分大小写的
模糊查询
SELECT * FROM city WHERE CountryCode LIKE 'ch%';
select 排序与限制
ORDER BY子句用来排序行
Asc:执行升序排序。默认值
DEsc:执行降序排序
ORDER BY子句一般在SELECT语句的最后面
LIMIT子句:
MySQL特有的子句。
它是SELECT语句中的最后一个子句(在order by后面)。
它用来表示从结果集中选取最前面或最后面的几行。
偏移量offset的最小值为0。
语法:
limit <获取的行数> [OFFSET <跳过的行数>]
或者limit [<跳过的行数>,] <获取的行数>
SELECT * FROM city
ORDER BY
按照人口数量排序输出中国的城市信息(ASC\DESC)
SELECT * FROM city WHERE CountryCode="CHN" ORDER BY Population DESC;(从大到小)
SELECT * FROM world.`city` WHERE countrycode='CHN'
ORDER BY id DESC ;
按照列数来进行排序
SELECT * FROM city
ORDER BY 5 DESC ;
取第1-10行
SELECT * FROM world.`city` WHERE countrycode='CHN'
ORDER BY 5 DESC LIMIT 20;
取第11-20行
SELECT * FROM world.`city` WHERE countrycode='CHN'
ORDER BY 5 DESC LIMIT 10,10 ;
SELECT * FROM world.`city` WHERE countrycode='CHN'
ORDER BY 5 DESC LIMIT 10 OFFSET 10 ;
3.多表查询
传统的连接写法(使用where)
---- 中国所有城市信息+使用语言
SELECT ci.name,ci.countrycode,ci.Population,cl.language FROM city AS ci,countrylanguage AS cl
WHERE ci.countrycode="chn" AND cl.countrycode="chn";
常用连接写法(join on )
查询青岛这个城市,所在的国家具体叫什么名字
SELECT ci.`Name`,ci.`CountryCode`,ci.`Population`,cl.name FROM city AS ci JOIN country AS cl ON ci.`CountryCode`=cl.code AND ci.name="qingdao"、
group by +聚合函数(avg()、max()、min()、sum())
算出中国人口总数
SELECT CountryCode,SUM(Population) FROM city WHERE CountryCode="chn" ORDER BY CountryCode