database初记录

desc 表名称 可以查到表的一些信息


SELECT 列名称 FROM 表名称
SELECT * FROM 表名称  显示表中所有列的信息
SELECT TOP 2 * FROM Persons  显示前两个
SELECT TOP 50 PERCENT * FROM Persons  显示前百分之五十 
               
SELECT * FROM Persons WHERE City   (not) LIKE 'N%'  显示以n开头的   加了not则为不以n开头的      like就是模糊查询  where name like ‘%/_%’ escape '/' 这句话的意思是查询一个带_的信息 escape'/'意思是把/变成一个转义字符 
                      WHERE is null                  就是查询这一列中是空值的  is  not null 是非空
                                       %n        以n结尾的
                                       %n%    含n的
                                    '[ALN]%'  以 "A" 或 "L" 或 "N" 开头的人
                                    '[!ALN]%'
                                       _n    第一个字符之后是n的
                                     IN (value1,value2,...)   在 WHERE 子句中规定多个值
                                     (not)BETWEEN 'Adams' AND 'Carter'  字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人


SELECT DISTINCT 列名称 FROM 表名称  显示表的列中不同的名称的行(如果名称相同则只显示一个)

SELECT 列名称 FROM 表名称  WHERE    列    运算符   值
SELECT   *    FROM Persons WHERE FirstName  =    'Bush'  (数值不需要引号)

and和or的用法(and可以看为且 or可看为或)
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'


顺序
SELECT Company, OrderNumber FROM Orders ORDER BY Company (DESC)  以字母顺序显示 company列的信息  DESC为逆序(从高到低)  ASC为顺序(从低到高)
可以多层排序 就是  ORDER BY xxx,xx 就是在第一层排序完成后 如果有相同的 就按第二层的排

增加
ALTER TABLE Persons
ADD Birthday date     在Persons表中 增加新的Birthday列   
再用这个改变这一列的数据类型
ALTER TABLE Persons
ALTER COLUMN Birthday year 改为年类型可以存放2位或4位的年份


插入
INSERT INTO table_name   (列1, 列2,...)      VALUES (值1, 值2,....)
INSERT INTO Persons      (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')


更新替换
UPDATE 表名称 SET 列名称  =           新值                   WHERE   列名称 =   某值
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'


删除
DELETE FROM 表名称 WHERE   列名称 =   值
DELETE FROM Person WHERE LastName = 'Wilson'  (若出现内外键约束则会出现问题!!!!)
删除所有行
DELETE FROM table_name
DELETE * FROM table_name 

DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除)
DROP DATABASE 删除数据库
TRUNCATE TABLE 表名称  (仅仅删除表格中的数据)

删除列
ALTER TABLE Person DROP COLUMN Birthday   在Person表中删除Birthday列


给表取别名
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po 
WHERE p.LastName='Adams' AND p.FirstName='John'      "Persons" 和 "Product_Orders"。我们分别为它们指定别名 "p" 和 "po"     (目前这个没有测试成功)

给列取别名
SELECT LastName AS Family, FirstName AS Name     不加as也可以  如果别名加了“”则完全按双引号中的当别名 是大写就是大写 是小写就是小写
FROM Persons                                         最终输出时 列的名字会变为别名


join比较重要 不太看得懂 可以去看看
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
貌似没什么区别 就是把两个表连接起来了


left join
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName    会从左表(Orders)中返回所有数据 就算没有匹配的 (匹配到了的当然会返回) 
right join相反
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
full join就是两边都会列出来 只是没匹配的地方的有些数据是空的


联合
SELECT column_name(s) FROM table_name1  UNION   SELECT column_name(s) FROM table_name2
SELECT E_Name FROM Employees_China      UNION   SELECT E_Name FROM Employees_USA         将这两个表中所选列的数据联合成一个列显示   UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名  UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL


将一个表的内容移给另一个表
SELECT (*)LastName,FirstName
INTO Persons_backup
FROM Persons  这里也可以加where和in          将persons表中的 lastname和firstname列数据移给Persons_backup

SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P     这样也是成立的


创建数据库
CREATE DATABASE database_nam
CREATE DATABASE my_db   创建一个名字叫my_db的数据库


创建数据库中的表
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)

CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)                           Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符


(integer(size)
  int(size)
  smallint(size)
  tinyint(size)  )      仅容纳整数。在括号内规定数字的最大位数

(decimal(size,d)
  numeric(size,d))            容纳带有小数的数字。   "size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数

char(size)                 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。  在括号中规定字符串的长度。


varchar(size)            容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。在括号中规定字符串的最大长度。


date(yyyymmdd)     容纳日期

约束  (加约束应该就是在创建表的时候在列后面加约束) 约束可以去b站看看视频更能理解

NOT NULL 约束强制列不接受 NULL 值
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证
UNIQUE 约束唯一标识数据库表中的每条记录
PRIMARY KEY 拥有自动定义的 UNIQUE 约束
下面的 SQL 语句强制 "Id_P" 列和 "LastName" 列不接受 NULL 值:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
  

如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)

如果在表建立之后要增加约束则
ALTER TABLE Persons
ADD UNIQUE (Id_P)
撤销为
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

null参与的运算都是null  就是因为这个 所以有个函数   nvl(name,0)   如果这个值是空值 则会被,后面那个值代替  不是则用自己的值   nvl2(name,a,5) 当name为空的时候转换为5 不为空转换为a


||是连接符 会将两列的数据横向的连接在一起 如 第一列名字||第二列名字  结果   第一列数据第二列数据   也可以 第一列名字||'sadf'||第二列名字  结果 第一列数据||'sadf'||第二列数据
 


concat(‘xxxx’,‘xx’)  结果 xxxxxx
substr(‘abcdefgh’,2,4) 结果bcde  从第二个开始输出四个字符
lengtf(‘xxxx’)    结果4     计算字符长度
instr(‘abcdefgh’,'b')  结果2   这个字符首次出现的位置
select name,lpad(salary,10‘a’)  from emplee      lpad(salary,10‘a’)用法 就是把所要输出的内容左对齐并且输出10位 不足的用a补齐 还有rpad 右对齐
trim(‘h’from‘hhhellohworldhh’) 结果 ellohworld  删除  这里只能去除首位的这个字符
replace(‘abcd’,‘b’,‘m’) 结果 amcd  替换所有的b
round(421.2262,2)四舍五入 小数点后两位    round(421.2262)round(421.2262,-2)
        421.23                                     421                 400
trunc(421.226,2)是截断 不用四舍五入
      241.22
mod(301,300)  1   求余

有日期函数 可以去查 跟日期运算有关  


to_char(name,'45654')  就是一直格式转换 把number类型转换为插入类型


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值