sql-v1.1
2020-12-16 15:18:07 0 举报
AI智能生成
mysql
作者其他创作
大纲/内容
1.基础教程
去重DISTINCT
语句:SELECT DISTINCT column_name,column_name<br>FROM table_name;<br>
疑问:对某个或者多个字段怎么去重
and & or
语句:SELECT * FROM Websites
WHERE country='CN'
AND alexa > 50;
order by<br>
语句:SELECT column_name,column_name<br>FROM table_name<br>ORDER BY column_name,column_name ASC|DESC;
ASC升序(默认),DESC降序
desc 或者 asc 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序
order by A,B 这个时候都是默认按升序排列<br>
order by A desc,B 这个时候 A 降序,B 升序排列<br>
order by A ,B desc 这个时候 A 升序,B 降序排列
插入语句INSERT INTO
语法1:无需指定要插入数据的列名,只需提供被插入的值即可INSERT INTO table_name<br>VALUES (value1,value2,value3,...);<br>
语法:需要指定列名及被插入的值INSERT INTO table_name (column1,column2,column3,...)<br>VALUES (value1,value2,value3,...);
更新UPDATE
语句:UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
删除DELETE<br>
语句:DELETE FROM table_name<br>WHERE some_column=some_value;
2.高级教程<br>
返回top数据SELECT TOP
语句:SELECT column_name(s)<br>FROM table_name<br>LIMIT number;
操作符LIKE
语句:SELECT column_name(s)<br>FROM table_name<br>WHERE column_name LIKE pattern;
'%a' //以a结尾的数据<br>
'a%' //以a开头的数据<br>
'%a%' //含有a的数据<br>
‘_a_’ //三位且中间字母是a的
'_a' //两位且结尾字母是a的<br>
'a_' //两位且开头字母是a的<br>
select * from username where 用户名 like '段_%' -- 会查出来段煜 段鑫<br>
select * from username where 用户名 like '段\_%' escape '\' -- 通过 \转义,只能查出来 段_煜
LIKE NOT LIKE
通配符<br>
语句:SELECT * FROM Websites<br>WHERE url LIKE 'https%'; <br>
% 替代 0 个或多个字符<br>
_ 替代一个字符<br>
[charlist] 字符列中的任何单一字符<br>
[^charlist]或[!charlist] 不在字符列中的任何单一字符
IN
语句:SELECT column_name(s)<br>FROM table_name<br>WHERE column_name IN (value1,value2,...);语句<br>
IN 操作符允许您在 WHERE 子句中规定多个值。
between<br>
语句:SELECT column_name(s)<br>FROM table_name<br>WHERE column_name BETWEEN value1 AND value2;语句<br>
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。<br>
NOT BETWEEN
别名as<br>
语句:SELECT column_name AS alias_name<br>FROM table_name;语句
JOIN
合并表UNION
语法:SELECT column_name(s) FROM table1<br>UNION<br>SELECT column_name(s) FROM table2;
UNION ALL 来选取重复的值
复制表数据SELECT INTO
复制数据插入新表
复制表数据INSERT INTO SELECT
复制数据插入已存在表
创建数据库CREATE DATABASE
CREATE DATABASE my_db;
创建表CREATE TABLE
CREATE TABLE table_name<br>(<br>column_name1 data_type(size),<br>column_name2 data_type(size),<br>column_name3 data_type(size),<br>....<br>);
约束
NOT NULL - 指示某列不能存储 NULL 值。<br> UNIQUE - 保证某列的每行必须有唯一的值。<br> PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。<br> FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。<br> CHECK - 保证列中的值符合指定的条件。<br> DEFAULT - 规定没有给列赋值时的默认值。<br>
索引
CREATE INDEX index_name<br>ON table_name (column_name) 查询快,允许重复
删除drop
删表
DROP TABLE table_name
删库
DROP DATABASE database_name
删表内数据
TRUNCATE TABLE table_name
删索引
ALTER TABLE table_name DROP INDEX index_name
列操作
加列
ALTER TABLE table_name<br>ADD column_name datatype
删列
ALTER TABLE table_name<br>DROP COLUMN column_name
改列类型
ALTER TABLE table_name<br>MODIFY COLUMN column_name datatype
自动创建主键AUTO INCREMENT
CREATE TABLE Persons<br>(<br>ID int NOT NULL AUTO_INCREMENT,<br>LastName varchar(255) NOT NULL,<br>FirstName varchar(255),<br>Address varchar(255),<br>City varchar(255),<br>PRIMARY KEY (ID)<br>)
图示CREATE VIEW
数据类型
3.函数
Aggregate 函数
SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。
AVG() - 返回平均值
SELECT AVG(column_name) FROM table_name
COUNT() - 返回行数 NULL不计入
SELECT COUNT(column_name) FROM table_name;
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和
SQL Scalar 函数
SQL Scalar 函数基于输入值,返回一个单一的值。
UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符,MySql 中使用
SubString(字段,1,end) - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式
SELECT FORMAT(column_name,format) FROM table_name;
SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date<br>FROM Websites;
GROUP BY
用于结合聚合函数,根据一个或多个列对结果集进行分组
SELECT column_name, aggregate_function(column_name)<br>FROM table_name<br>WHERE column_name operator value<br>GROUP BY column_name;
HAVING
WHERE 关键字无法与聚合函数一起使用。<br>HAVING 子句可以让我们筛选分组后的各组数据。
SELECT column_name, aggregate_function(column_name)<br>FROM table_name<br>WHERE column_name operator value<br>GROUP BY column_name<br>HAVING aggregate_function(column_name) operator value;
总访问量大于 200 的网站<br>SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log<br>INNER JOIN Websites<br>ON access_log.site_id=Websites.id)<br>GROUP BY Websites.name<br>HAVING SUM(access_log.count) > 200;<br>
EXISTS 运算符
EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。
SELECT column_name(s)<br>FROM table_name<br>WHERE EXISTS<br>(SELECT column_name FROM table_name WHERE condition);
0 条评论
下一页