Sql--Sql语句简单介绍 create select update delete drop

--Sql简单的创建show databses;

create database sbpms;

use sbpms;

show tables; 

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `e_mail` varchar(50) NOT NULL,
  `role` varchar(50) NOT NULL,
  `report_to` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;


LOCK TABLES `user` WRITE;
INSERT INTO `user` VALUES (1,'ROOT','202cb962ac59075b964b07152d234b70','123@123.com','SUP','SUP'),
(2,'SS','202cb962ac59075b964b07152d234b70','SS@SS.com','SS','SS'); UNLOCK TABLES;SELECT * FROM user;SELECT DISTINCT name FROM user

 

--表关联关系
--去除重复数据;重复的列只保留一条记录;
SELECT * FROM user WHERE id NOT BETWEEN 1 AND 2  
-- 不在1 和 2 的记录;
SELECT *  FROM user ORDER BY name DESC, role  ASC
--在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
SELECT * FROM table_name1  INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
--只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsFULL JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName

-- Top 关键字
--我们希望从上面的 "user" 表中选取头两条记录。
SELECT TOP 2 * FROM user
--我们希望从上面的 "user" 表中选取 50% 的记录。
SELECT TOP 50 PERCENT * FROM user
 

--UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
--请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

--默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

--SQL SELECT INTO 语法  
--http://www.w3school.com.cn/sql/sql_select_into.asp
SELECT *
INTO new_table_name [IN externaldatabase] 
FROM old_tablename

 




--通过使用 DROP 语句,可以轻松地删除索引、表和数据库。  
--SQL DROP INDEX 语句
--我们可以使用 DROP INDEX 命令删除表格中的索引。
--用于 Microsoft SQLJet (以及 Microsoft Access) 的语法:  
DROP INDEX index_name ON table_name 

--用于 MS SQL Server 的语法:  
DROP INDEX table_name.index_name 

--用于 IBM DB2 和 Oracle 语法:  
DROP INDEX index_name 

--用于 MySQL 的语法:  
ALTER TABLE table_name DROP INDEX index_name

--SQL DROP TABLE 语句

--DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):  
DROP TABLE 表名称

--SQL DROP DATABASE 语句

--DROP DATABASE 语句用于删除数据库:
DROP DATABASE 数据库名称

 

--ALTER TABLE 语句用于在已有的表中添加、修改或删除列

--添加列:
ALTER TABLE table_name ADD column_name datatype

--删除表中的列:
ALTER TABLE table_name DROP COLUMN column_name

--注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。要改变表中列的数据类型,请使用下列语法:
ALTER TABLE table_name ALTER COLUMN column_name datatype

--现在我们希望改变 "Persons" 表中 "Birthday" 列的数据类型, 改为year类型("Birthday" 列的数据类型改为 year,可以存放 2 位或 4 位格式的年份)。
 ALTER TABLE Persons ALTER COLUMN Birthday year

--Auto-increment 会在新记录插入表中时生成一个唯一的数字。
--用于 MySQL 的语法
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)
)
--MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。
--默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
--要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法: 
ALTER TABLE Persons AUTO_INCREMENT=100

--用于 SQL Server 的语法
CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

--用于 Oracle 的语法
--创建名为 seq_person 的序列对象
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
-- 插入的时候去查询序列的nextval值
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')


--创建视图
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

--SQL 撤销视图
SQL DROP VIEW Syntax
DROP VIEW view_name

--更改表内容
UPDATE user SET id= 2 WHERE id =1;
--删除表内容
delete from user where id =2;

 

posted on 2013-05-22 11:45  BIGBIRD大鸟  阅读(499)  评论(0编辑  收藏  举报