这样做就可以创建一个数据库:

  1. CREATE DATABASE 数据库名称

这样做就可以创建一个数据库中的表:

  1. CREATE TABLE 表名称
  2. (
  3. 列名称1 数据类型,
  4. 列名称2 数据类型,
  5. .......
  6. )

本例演示如何创建名为 “Person” 的表,有四个列。列名是:”LastName”、”FirstName”、”Address” 以及 “Age”:

  1. CREATE TABLE Person
  2. (
  3. LastName varchar,
  4. FirstName varchar,
  5. Address varchar,
  6. Age int
  7. )

这个例子演示如何为某些列定义长度的最大值:

  1. CREATE TABLE Person
  2. (
  3. LastName varchar(30),
  4. FirstName varchar,
  5. Address varchar,
  6. Age int(3)
  7. )

数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:

数据类型 描述
  • integer(size)
  • int(size)
  • smallint(size)
  • tinyint(size)
仅容纳整数。在括号内规定数字的最大位数。
  • decimal(size,d)
  • numeric(size,d)

容纳带有小数的数字。

“size” 规定数字的最大位数。”d” 规定小数点右侧的最大位数。

char(size)

容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。

varchar(size)

容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。

date(yyyymmdd) 容纳日期。

索引被创建于已有的表中,它可使对行的定位更快速更有效。可以在表格的一个或者多个列上创建索引,每个索引都会被起个名字。用户无法看到索引,它们只能被用来加速查询。

注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常用于搜索的列上面创建索引。

在表格上面创建某个一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。

  1. CREATE UNIQUE INDEX 索引名称
  2. ON 表名称 (列名称)

“列名称” 规定你需要索引的列。

在表上创建一个简单的索引。当我们省略关键词 UNIQUE 时,就可以使用重复的值。

  1. CREATE INDEX 索引名称
  2. ON 表名称 (列名称)

“列名称” 规定你需要索引的列。

本例会创建一个简单的索引,名为 “PersonIndex”,在 Person 表的 LastName 字段:

  1. CREATE INDEX PersonIndex
  2. ON Person (LastName)

如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC

  1. CREATE INDEX PersonIndex
  2. ON Person (LastName DESC)

假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:

  1. CREATE INDEX PersonIndex
  2. ON Person (LastName, FirstName)

    二、删、改:table的修改和删除
    2、修改基本表

             alert  table  <表名>

                                  [add <新列名> <数据类型> [完整性约束]]

                                  [drop <完整性约束名>]

                                  [modify <列名><数据类型>];

          add: 用于向表中增加新列及新列相关的完整性约束条件,新的列增加成功后不带任何数据

          drop:用于删除指定的完整性约束条件

          modify:用于修改原来的列定义,包括修改列名和数据类型,列数据类型修改后可能会丢失原有的数据

 

alert table student add Scome date;
alert table student modify Sage smallint
;
alert table student drop unique(Sname);

         3、SQL中没有提供删除属性列的功能,若需要删除列,必须间接通过select语句来实现,将需要的列的内容复制到另一个表中,再删除原表,然后将新表的名字命名为原表名

        4、删除基本表

              drop table <表名>

  1. 5、删除索引 drop index <索引名>;

三、改、删:数据更新

  1.  

1、数据插入

  1.  

   insert into <表名> [<列名>[,<列名>]….) values (value1, value2,…);

  1.  

             如果表中的每一列均有数据插入,则可不用指定任何表名

  1.  

如:

  1.  

 

  1.  
  1. .插入职工数据:EmpTable(职工表)
    insert into EmpTable(Name,Age,Duty,Salary) values(\'王明\',35,\'外贸总监\',12500)
    insert into EmpTable(Name,Age,Duty,Salary) values(\'李勇\',24,\'外贸员\',6500)
    insert into EmpTable(Name,Age,Duty,Salary) values(\'刘星\',25,\'外贸员\',7500)
    insert into EmpTable(Name,Age,Duty,Salary) values(\'周平\',21,\'外贸员\',3500)
    insert into EmpTable(Name,Age,Duty,Salary) values(\'杨兰\',20,\'外贸员\',3000)
  1.  

 

  1.  

2、数据修改

  1.  

   update <表名> set <列名>=新值 where <条件表达式>

  1.  

3、数据删除

  1.  

           删除指的是删除数据库中的一个记录,而不是删除某一列

  1.  

           delete from <表名> where <条件表达式>

  1. 四、数据查询

       select  [distinct | distinctRow | all]

  1.  

                    列名[,列名][,….]

  1.  

                    [into {outfile | dumpfile} \’文件名\’ export_options]

  1.  

                    [from 表名]

  1.  

                    [where 查询条件]

  1.  

                   [group by 列名[, ….]]

  1.  

                    [having 条件定义]

  1.  

                   [order by {无符号整数|列名|公式}[asc | desc],…]

  1.  

                  [limit [偏移量,] 行数]

  1.  

                  [procedure 过程名称]

  1.  

               注:select语句中所有使用的关键词必须精确的以上面的顺序给出 

  1.  

      如果以降序排列,则在order by中加入关键字desc,升序则加入关键字asc,默认是升序

  1.  

      having子名能引用任何列或在查询中命名的别名,它最后运用,就在项目被送到客户之前是,没有变化。需要注意,不要对应该在where子句中的项目使用having.

  1.  

                       limit子名被用来限制select返回的行数,如果给定1个参数,它指出返回行的最大数目;如果给定2个参数,第一个指定要返回的第一行的偏移量,第二个指定返回行的最大数目,初始行的偏移量是0

  1.  
//返回前5个记录
select * from table limit 5
;

//
返回第6到第15个记录
select * from table limit 5,10;
  1.  

                    select …. into outfile \’文件名\’ 格式的select语句将选择的行写入一个文件,文件在服务器上被创建,并且不能是已经存在的,且在服务器主机上还必须有file权限以使用这种select

  1.  

                    distinct,使用了这个关键字后,再执行select语句的结果集中,如果有重复的值,则会在结果集中去掉重复的值而只保留一个值。

  1.  
//选择学生表中所有学生的姓名记录,并且筛选掉重复的记录,将记录保存在名字为name的结果集中,并按学号由大到小排列
select distinct sname as name, sno from student order by sno desc
;

//
选择学生表中所有学生的姓名和年龄,并将每个同学的姓名后加上“同学”二字,将每个人的年龄增加1岁,同是计算所有同学年龄的平均值 
// sum() — 求所有数据的总和

// max() –求所有数据中的最大值
// min() —求所有数据中的最小值
// count() -求所有数据的个数
// avg() – 求所有数据的平均值
select sname, “同学”, age+1avg(age) from student;
求数学成绩排在前5名的平均分
select average(grade)from (select top 5 * from table_grade order by  grade desc)
//
列出学号在1和100之间,并且成绩大于85分的所有姓”赵“同学的所胡记录
// % -代表任意字符

//使用通配符时,前面必须用关键字”like
select * from student where sname like \’
赵%’ and sno between 1 and 100 and sno in (select sno from student where grade>85);

//使用学生表、课程表以及学生选课表这3个基本表,列出所有学生的姓名、学号、所选课程的课程名称及该课程的学分
select sname, sno, cno, credit from student, course, sc where student.sno=sc.sno and sc.cno=course.cno;
 
统计每种状态的订单数和累计订单总额?group by
select count(order_status),count(pay) from order group by order_status
 
内连接 innner join 

inner join(等值连接) 只返回两个表中联结字段相等的行
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

INNER JOIN 语法:

INNER JOIN 连接两个数据表的用法:
SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

例子:查询人员信息表中 id关联的人员name,和部门id关联的部门name
select stu.stu_name,org.org_name from stu inner join org on sut.id=org.stu_id

INNER JOIN 连接三个数据表的用法:
SELECT * FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

INNER JOIN 连接四个数据表的用法:
SELECT * FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN
表4 ON Member.字段号=表4.字段号

 
INNER JOIN 连接五个数据表的用法:
SELECT * FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3
ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON
Member.字段号=表5.字段号
 

  1.  

版权声明:本文为zyy98877原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zyy98877/p/8489277.html