SQL语句

SQL语句

SQL是结构化查询语句(Structured Query Language)的缩写,其功能包括数据查询(DQL)、数据定义(DDL)、数据操作(DML)和数据控制(DCL)4个部分。

  • DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; CREATE、 ALTER、DROP

  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); INSERT、 UPDATE、 DELETE

  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

MySQL使用
  SHOW DATABASES;#显示数据库
  USE databases;#选择数据库
  SHOW TABLES;#显示所选择数据库表
  SHOW COLUMNS FROM table;#显示表设计信息
检索数据
  SELECT pro_name FROM products;#查找单个列
  SELECT pro_name,prod_id,rod_price FROM products;#查找多列
  SELECT * FROM products;#查找所有列
  SELECT DISTINCT vend_id FROM products;#检索数据不重复
  
  SELECT prod_name FROM products LIMIT 5;#检索结果不多于5行(第一行开始)
  SELECT prod_name FROM products LIMIT 5,5;#检索从第五行开始的五行
排序检索数据
  
  SELECT prod_name FROM products ORDER BY prod_name;#检索并排序
  SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price,prod_naem;#按多个列排序
  SELECT prod_name FROM products ORDER BY prod_name DESC;#指定排序方向,DESC降序
  SELECT pro_price FROM products ORDER BY prod_price DESC LIMIT 1;#ORDER BY 与 LIMIT 组合使用
过滤数据
  
  SELECT prod_name,prod_price FROM products WHERE prod_price=2.5;#操作符:=、<>(不等于)、!=、<、>、<=、>=、BETWTEEN a AND b、IS NULL
数据过滤
  
  SELECT prod_id,prod_name,prod_price FROM products WHERE vend_id==1003 AND prod_price<=10;#组合WHERE; AND、OR
  
  SELECT prod_name,prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_name;#指定条件范围检索;NOT IN
通配符过滤
  
  SELECT prod_name,prod_price FROM products WHERE prod_name LIKE 'jie%';
  #'%':任何字符出现任意次数
  #'_':匹配单个任意字符
  
  REGEXP 正则表达式匹配
创建计算字段
  
  SELECT Concat(vend_name,'(',vend_country,')') FROM vendors ORDER BY vend_name;#拼接字段
  SELECT Concat(RTrim(vend_name),'(',RTrim(vend_country),')') AS vend_title FROM vendors ORDER BY vend_name;#拼接字段,使用别名
  SELECT pro_id,quantity,item_price, quantity*item_price AS expended_price FROM orderitems WHERE order_num=2005;#执行算数计算
组合查询

可用UNION操作符来组合数条SQL查询。利用UNION可给出多条SELECT语句,将它们的结果组合成单个结果集。

  
  SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price<=5 UNION SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002);
插入数据

插入一行数据:

  
  INSERT INTO coustomers(cust_name,
      cust_address,
      cust_city,
      cust_state.
      cust_zip,
      cust_country,
      cust_contact)
    VALUES('Pep E.LaPew',
          '100 main street',
          'Los Angeles',
          'CA',
          '90046',
          'USA',
          NULL);

插入多行数据:

  
  INSERT INTO coustomers(cust_name,
      cust_address,
      cust_city,
      cust_state.
      cust_zip,
      cust_country,
      cust_contact)
    VALUES('Pep E.LaPew',
          '100 main street',
          'Los Angeles',
          'CA',
          '90046',
          'USA',
          NULL),#逗号隔开
          ('Pep E.LaPew',
          '100 main street',
          'Los Angeles',
          'CA',
          '90046',
          'USA',
          NULL);

插入检索出的数据

  
  INSERT INTO coustomers(cust_name,
      cust_address,
      cust_city,
      cust_state.
      cust_zip,
      cust_country,
      cust_contact)
     SELECT cust_name,
      cust_address,
      cust_city,
      cust_state.
      cust_zip,
      cust_country,
      cust_contact
     FROM custnew;
更新与删除
  
  #更新
  UPDATE customers
  SET cust_name='The Fudds',
      cust_email='12345@123.com'
  WHERE cust_id=1005;
  
  #删除
  DELETE FROM customers WHERE cust_id=1006;#省略WHERE子句则删除整个表的内容,但不删除表
  
  #DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了删除列,使用UPDATE语句
  UPDATE customers SET cust_email=NULL WHERE cust_id=1005;#其中NULL用来删除cust_email列中所有值
  
  #更快的删除,删除表中数据,不删除表
  TRUNCATE TABLE#速度比delete更快
  
创建和操纵表
  
  #创建表
  CREAT TABLE customers
  
      cust_id       int      NOT NULL  AUTO_INCREMENT,
      cust_name     char(50) NOT NULL,
      cust_address  char(50)  NULL,
      cust_city     char(50)  NULL,
      cust_state    char(5)   NULL,
      PRIMARY KEY (cust_id)
  )ENGINE=InnoDB;
  #AUTO_INCREMENT 值自动增加
  
  #DEFAULT 指定默认值
  CREAT TABLE customers
  
      cust_id       int      NOT NULL  AUTO_INCREMENT,
      cust_name     char(50) NOT NULL,
      cust_address  char(50)  NULL    DEFAULT china,
      cust_city     char(50)  NULL,
      cust_state    char(5)   NULL,
      PRIMARY KEY (cust_id)
  )ENGINE=InnoDB;
  
  #更新表
  ALTER TABLE vendors ADD vend_phone CHAR(20);#添加列
  ALTER TABLE vendors DROP COLUMN vend_phone;#删除列
  
  #删除表
  DROP TABLE coustomers;
  
  #重命名表
  RENAME TABLE customers2 TO customers;
视图
  
  CREATE VIEW productcustomers AS SELECT cust_name,cust_contact,prod_id FROM customers,orders,orderitems WHERE customers.cust_id=orders.cust_id;
内连接与外连接

1.内连接,显示两个表中有联系的所有数据;

2.左链接,以左表为参照,显示所有数据;

3.右链接,以右表为参照显示数据;

  • 内连接

内连接又称等值连接,使用 INNER JOIN 关键字。

  
  select a, b, c
  from A inner join B
  on A.key = B.keymysql

可以不明确使用 INNER JOIN,而使用普通查询并在 WHERE 中将两个表中要连接的列用等值方法连接起来。

  
  select a, b, c
  from A, B
  where A.key = B.key
  • 外连接

外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行。

检索所有顾客的订单信息,包括还没有订单信息的顾客。

  
  select Customers.cust_id, Orders.order_num
  from Customers left outer join Orders
  on Customers.cust_id = Orders.curt_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值