mysql数据库的增删改查

mysql数据库的增删改查

1.mysql接口自带功能

msyq>\h:查看帮助信息
一、\h 或 help 或 ?
二、\G:分组显示结果
三、\T 或 tee:将结果和命令输出到文本
四、\c 或 CTRL+c:清除当前语句
五、\s 或 status:获取MySQL服务器状态信息
六、\. 或 source:执行外部SQL脚本:二进制日志截取、备份出来的SQL脚本
七、\u 或use:切换数据库

2.sql服务端命令

2.1 sql种类

DDL:数据库(对象)定义语言
DCL:数据库控制语言(grant revoke)
DML:数据(行)操做语言(update delete insert)
DQL: 数据查询语言(show、select)

2.1.1 DDL操做之管理库操做

查看数据库mysql

mysql> show databases;
mysql> show databases like 'test%'; #==>模糊查询,以test开头的数据库

建立数据库sql

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;

删除数据库ui

mysql> drop database llf;

改变库的字符集日志

mysql> alter database oldboy charset utf8mb4;
mysql> show create database oldboy;

切库code

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字句的基本使用

一、查询中国(CHN)全部的城市信息
SELECT * FROM world.`city` WHERE CountryCode='CHN';
or
SELECT * FROM world.`city` WHERE CountryCode='chn';
二、查询中国(CHN)安徽省全部的城市信息。
SELECT * FROM city WHERE CountryCode="CHN" AND District="anhui";
 三、查询世界上人口数量在10w-20w城市信息
 SELECT * FROM city WHERE Population BETWEEN 100000 AND 200000;
四、中国或者日本的全部城市信息
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
相关文章
相关标签/搜索