mysql进阶之路

目录

前言

一、mysql的安装和查看

二、SQL命令

1.show查看数据库/表格目录

2.use/select切换/查看当前数据库

3.desc查看表结构

4.create创建数据库/表格/视图/索引

4.1.创建数据库-适配中文

4.2.创建表格

4.3.添加索引

4.4.创建视图

4.5.AUTO_INCREMENT字段

5.select检索数据

5.1基础语法

5.2.distinct去重

5.3.where条件子句

5.4.and和or运算符

5.5.order by排序

5.6.limit/top/rownum限制行数

5.7.like模糊查询和通配符

5.8.in范围查询

5.9.between..and操作符

5.10.as别名Alias

5.11.join表链接(多表联查)

5.12.union操作符组合查询

5.13.select .. into查询插入

5.14.constraint约束

5.15.is null 和is not null

5.16.子查询

5.17.GROUP BY 分组

5.18.聚合函数(avg(),count(),max(),min(),sum())

5.19.first()

5.20.last()

5.21.ucase

5.22.lcase

5.23.mid()文本中提取字符

5.24.len()

5.25.round()四舍五入

5.26.now()当前时间

5.27.format()字段格式化

5.28{$id}查询上一条记录

5.29.limit...offset指定从哪开始返回几行

5.30concat()函数拼接字段

5.31TRIM()、LTRIM()、RTRIM()

5.32中位数

6.insert into插入数据

7.update..set修改数据

8.delete from删除数据

9.drop删除表格结构

10.truncate清除表数据

11.alter修改表结构

11.1添加/删除/修改列

11.2增加主键 

12.rename重命名/移动

三、mysql的数据类型

四、存储过程


前言

结构化查询语言(Structured Query Language)简称SQL

一、mysql的安装和查看

1.1安装mysql服务端:sudo apt-get install mysql-server

1.2安装mysql客户端:sudo apt-get install mysql-client

1.3查看mysql进程:ps -ef |grep mysqld

1.4查看mysql端口:netstat -an |grep 3306

1.5登录本机mysql:mysql -u root -p

1.6登录远程mysql:mysql -h 127.0.0.1 -u root -p

1.7导入sql文件:source /home/abc/abc.sql;

二、SQL命令

1.show查看数据库/表格目录

1.1查看mysql中有多少数据库:show databases;

1.2.查看数据库中有多少表格:show tables;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.04 sec)

2.use/select切换/查看当前数据库

2.1切换/选择数据库:use databasename;

2.2查看当前数据库名称:select database();

mysql> use sys
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select database();
+------------+
| database() |
+------------+
| sys        |
+------------+
1 row in set (0.00 sec)

3.desc查看表结构

查看表结构:desc tablename;

mysql> desc session;
+------------------------+------------------------------------------+------+-----+---------+-------+
| Field                  | Type                                     | Null | Key | Default | Extra |
+------------------------+------------------------------------------+------+-----+---------+-------+
| thd_id                 | bigint(20) unsigned                      | NO   |     | NULL    |       |
| conn_id                | bigint(20) unsigned                      | YES  |     | NULL    |       |
| user                   | varchar(128)                             | YES  |     | NULL    |       |
....
....

4.create创建数据库/表格/视图/索引

4.1.创建数据库-适配中文

create database databasename default chartset utf8;

CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
-- "COLLATE utf8_general_ci",大致意思是在排序时根据utf8变码格式来排序--适配中文

4.2.创建表格

create table tablename(
        列名(字段) 数据类型,主键,约束,
        列名(字段) 数据类型,
        ......

        列名(字段) 数据类型
        );

create table my_table (name varchar(20) not null default '');
Query OK, 0 rows affected (0.36 sec)
--创建的表格,默认是utf8编码,创建表格已default utf8适配中文

CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
Query OK, 0 rows affected (0.41 sec)

4.3.添加索引

您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

在表上创建一个简单的索引。允许使用重复的值:

CREATE INDEX index_name
ON table_name (column_name)  --普通索引

CREATE UNIQUE INDEX index_name
ON table_name (column_name)  --唯一索引
CREATE INDEX PersonIndex
ON Person (LastName)  --创建索引,名为 "PersonIndex",在 Person 表的 LastName 列:

CREATE INDEX PersonIndex
ON Person (LastName DESC)  --以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC:

CREATE INDEX PersonIndex
ON Person (LastName, FirstName)   --索引不止一个列,括号中列出这些列的名称,用逗号隔开:

4.4.创建视图

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No

CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)  --创建视图

SELECT * FROM [Products Above Average Price]   --查询视图

4.5.AUTO_INCREMENT字段

每次插入新记录时,自动地创建主键字段的值。

CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)

 

5.select检索数据

5.1基础语法

select 列名称 from 表名称

select FirstName from NameTable  --单列
select FirstName,SecondName from NameTable  --多列
select * from NameTable  --所有列

5.2.distinct去重

语法:select distinct 列名称 from 表名称

select Company from Orders --未去重
select distinct Company from Orders --去重

5.3.where条件子句

语法:select 列名称 from 表名称 where 列名称 操作符 值

select FirstName from NameTable where FirstName=‘Li’
select FirstName from NameTable where Age>20
select FirstName from NameTable where Age between 'Li' and 'Zhang'

5.4.and和or运算符

涵义:AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。解释如字面意思

select FirstName from NameTable where SecondName='Xiu' and LastName='Chou'
select FirstName from NameTable where SecondName='Xiu' or SecondName='Liu'

5.5.order by排序

ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。多列排序仅在第一个列名有多个值时,才会按第二列排序,如果值都是唯一的,则不会按第二个列排序

SELECT Company, OrderNumber FROM Orders ORDER BY Company  --单列排序
SELECT Company, OrderNumber FROM Orders ORDER BY Company,Number  --多列排序
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC,Name  --降序,DESCENDING
SELECT company, OrderNumber FROM Orders ORDER BY ASC  --升序,默认即是,可省略
SELECT company, OrderNumber FROM Orders ORDER BY 2,3  --按列位置排序

--DESC关键字只应用到直接位于其前面的列名,即Name列仍是以升序排列,即需要特定指定才会以降序排序:

SELECT Compamy,OrderNumber FROM Orders ORDER BY Company DESC,Name DESC

5.6.limit/top/rownum限制行数

mysql:SELECT column_name(s) FROM table_name LIMIT number

oracle:SELECT column_name(s) FROM table_name WHERE ROWNUM <= number

SQL server:SELECT TOP number|percent column_name(s) FROM table_name

SELECT * FROM Persons LIMIT 5 --只显示前5行数据
SELECT * FROM Persons LIMIT 1,2  --显示2和3行
SELECT * FROM Persons DESC LIMIT 1  --显式最后一行,同LAST语句
SELECT * FROM Persons ORDER BY Peple_id DESC LIMIT 5  --显式后5行
SELECT * FROM Persons WHERE ROWNUM <= 5  --只显示前5行数据
SELECT TOP 2 * FROM Persons  --只显示前2行
SELECT TOP 50 PERCENT * FROM Persons  --显式50%行的数据

5.7.like模糊查询和通配符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式,在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。语法:

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern

通配符 描述
% 替代一个或多个字符,区分大小写,且不匹配空值
_ 仅替代一个字符
[charlist
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值