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
posted @ 2019-05-10 17:06  游走在边缘的人  阅读(324)  评论(0编辑  收藏  举报