SQL
1、对大小写不敏感
2、SQL使用单引号来环绕文本值,如果是数值,不使用引号
-->DML(数据操作语言)执行查询
-->SELECT(从数据库获取数据)
select 列名称 from 表名称
select * from 表名称
select distinct 列名称 from 表名称 (列出不重复的项)
select 列名称 from 表名称 where 列 运算符 值 (where后面带的是条件)
AND OR 将WHERE子语句中把两个或多个条件结合起来(使用()来组成复杂的表达式)
ORDER BY 用于对结果集进行排序(指定列/升序)select a,b from table order by a(从table中查询a,b两列,并根据a进行升序排列)
select a,b from table order by a,b(满足a,b同时升序)
select a,b from table order by a DESC (倒序排列)
select a,b from table order by a DESC,b ASC (a倒叙并且b正序)
-->UPDATE(更新数据库表中的数据)
update 表名称 set 列名称=新值 where 列名称=某值
-->DELETE(从数据库表中删除数据)
delete from 表名称 where 列名称=值
-->INSERT INTO(向数据库表中插入数据)
INSERT INTO 表名称 VALUES(值1,值2,,)
INSERT INTO 表名称 (列名称1,列名称2,,) VALUES(值1,值2,,)
-->TOP(用于规定要返回的记录的数目)
SQL Server语法:SELECT TOP number|percent column_name(s) FROM table_name
mySQL语法:SELECT column_name FROM table_name LIMIT number
Oracle语法:SELECT column_name from table_name where rownum<=number
-->LIKE(用于在WHERE子句中搜索列中的指定模式)
select column_name from table_name where column_name LIKE pattern ('%'可用于定义通配符)
select column_name from table_name where column_name NOT LIKE pattern(不包含)
-->SQL通配符
1、% 替代一个或多个字符
2、_ 仅替代一个字符
3、[ABC]ABC中任何一个单一字符 (在MYSQL中不适用,必须以正则表达式代替)
select * from table_name where column_name regexp '^[ABC]';
select * from table_name where column_name rlike '^[ABC]';
4、[^ABC]/[!ABC]不是ABC中任何一个
select * from table_name where column_name rlike '^[^ABC]';
-->IN操作符(在WHERE子句中规定多个值,条件中同时带两个值)
select * from table_name where column_name in ('a','b')
-->BETWEEN 操作符(between..and会选取介于两个值之间的数据范围)
select * from table_name where column_name between 'a' and 'c'; --输出a,b,c(MYSQL)
不同的数据库输出的范围不同
select * from table_name where column_name NOT BETWEEN 'a' and 'c';
-->Alias(为列名和表名指定别名)
表名:select column_name from table_name as alias_name ???
列名:select column_name as alias_name from table_name
-->JOIN(用于根据两个或多个表中的列之间的关系,从这些表中查询数据)
select column_name(s) from table_name1 inner join table_name2 on table_name1.column_name=table_name2.column_name order by column_name INNER JOIN:
SELECT column_name(s)
FROM table1
INNER JOIN table2 或者 JOIN table2
ON table1.column_name=table2.column_name;
![]()
![]()
LEFT JOIN:
从左表返回所有的行,即使右表没有匹配
SELECT column_name(s)
FROM table1(左表)
LEFT JOIN table2 或 LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
![]()
RIGHT JOIN:
SELECT column_name(s)
FROM table1
RIGHT JOIN table2(右表) 或 RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
![]()
FULL OUTER JOIN 只要左表和右表存在匹配就返回行
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
--> Union(用于合并两个或多个select语句的结果集)
[union内部的SELECT语句必须拥有相同数量的列,列也必须是‘相同的数据类型’]
select column_name from table_name1 UNION select column_name from table_name2 [UNION ALL重复的值也会显示]
--> INTO(1、创建表的备份复件,2、从表中选取数据,将数据插入另一个表中)[MYSQL数据库不支持]
select * into new_table_name from old_tablename (将表中的所有的列插入新表)
select column_name into new_table_name from old_tablename (将表中的选中的列插入新表)
select * into table_name IN 'database' from table_name(将另一个数据库拷贝表)
[MYSQL]:create table new_table_name as select * from old_tablename
-->INSERT INTO SELECT(从一个表复制数据,然后把数据插入到一个已存在的表中,目标表已存在的不会受影响)
INSERT INTO table2 SELECT * FROM table1;(将table1中的所有列都插入到table1中)(表的结构一致)
INSERT INTO table2(column_name) SELECT column_name from table1;(表的结构不一致时)
+WHERE,加条件
-->DDL(数据定义语言)创建或删除表格
-->CREATE DATABASE 创建数据库
CREATE DATABASE dbname;
-->ALTER DATABASE 修改数据库
-->CREATE TABLE 创建新表
create table table_name(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size)
);
data_type:varchar,integer,decimal,date..
-->CONSTRAINT(如果存在违反约束的数据行为,会被约束中止)
create table table_name(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name
);
约束:
NOT NULL:指示某列不能存储NULL值
约束字段始终包含值:不添加值,就无法插入或更新数据
create table table_name(column_name1 data_type(size) NOT NULL);[创建表]
alter table table_name modify column_name data_type not null;[修改表]
alter table table_name modify column_name data_type null;[删除NOT NULL]
UNIQUE:保证某行必须有唯一的值[每一个表可以有多个UNIQUE约束]
CREATE:
[MYSQL]
create table table_name(
column_name1 data_type(size) NOT NULL,
column_name2 data_type(size) NOT NULL,
UNIQUE (column_name1)
);
[SQL server/Oracle/MS Access]
create table table_name(
column_name1 data_type(size) NOT NULL UNIQUE,
column_name2 data_type(size) NOT NULL
);
定义多个UNIQUE:
create table table_name(
column_name1 data_type(size) NOT NULL,
column_name2 data_type(size) NOT NULL,
CONSTRAINT uc_personid UNIQUE(column_name1,column_name2)
);
ALTER:
单个:
alter table table_name
add unique(column_name)
多个:
alter table table_name
add constraint uc_personid unique(column_name1,column_name2)
撤销:
[MYSQL]
alter table table_name
drop index uc_personid
[SQL server/Oracle/MS Access]
alter table table_name
drop constraint uc_personid
PRIMARY KEY:确定列有唯一标识
FOREIGN KEY:保证一个表中的数据匹配另一表中的值的参照完整性
CHECK:保证列中的值符合指定的条件
DEFAULT:规定没有给列赋值时的默认值
-->ALTER TABLE 变更(改变)数据库表
-->ALTER TABLE table_name TRUNCATE TABLE table_name[改变数据类型]
-->ALTER TABLE table_name ADD column_name datatype[表中添加列]
-->ALTER TABLE table_name DROP COLUMN column_name[删除表中列]
-->DROP TABLE 删除表
-->DROP TABLE table_name[删除表]
-->DROP DATABASE database_name[删除数据库]
-->TRUNCATE TABLE table_name[删除表中内容]
-->CREATE INDEX 创建索引
-->DROP INDEX 删除索引