• 2015-10-19 SQL 第一次课 (新建数据库、创建表、注释、查询语句、新增、更新、删除、联合查询)


    1、认识数据库并新建:

    1)打开数据库,连接到服务器。

    2)服务里类型不用管。

    3)服务器名称:打个点“.”表示服务器在本地计算机,如果是托管在别人的服务器上,就输入服务器IP地址。

    4)身份验证:如果是windows身份验证,就需要有管理员权限。一般托管在别人的服务器上,(包括正常情况下),都是用SQL身份验证,需要输入sa和密码(密码就是安装时让输入的密码)。

     

     2、  建立数据库:

     

    在建立数据库名称时(各种名称时),都遵守一个命名规则:

    1)用英文命名

    2)每个单词的首字母大写(驼峰原则:首字母大写)

    如:StudentInfor(学生信息表)

     3、新建表:

     右键点击,取名(遵循命名规则)。

     4、建字段(数据):

    在数据中,每一行都需要一个唯一的标识,也就是主键。主键一般起名就叫ID。

    主键=标识=XXXID

    主键:这一行数据的唯一标识,也就是我们设置的ID。

    1)设置主键的方法:

    右键点击想要设置为主键的项目前面的黑色三角形——设置主键

     

    此时我们可以设置我们需要的主键为自增类型。

    自增类型是:当我们往这个表里插入数据的时候,它的值会自动+1。(上图的1、2、3..会自动+1往下排,1、2、3、4、5、6……)

    2)自增类型设置方法:

     

     

     5、数据类型:在设置数据时,要注意数据类型。

    如:

    1)学生ID,数据类型是整形(int),是数字。

    2)学生名字,就需要设置字符串(nvarchar(10)用的最多)

    数据类型:

    • char,示例:UserName char(20) //char(20),字段定长表示20字符/10个汉字,如果只放一个字节,后面就是九个空格(一个中文两个字节)
    • nchar,示例:UserTelphone nchar(30) //nchar(30),放15个中文,定长
    • varchar,示例:UserAddress varchar(10)放五个中文,变长,如果只放一个字节,就只放一个字节
    • nvarchar,示例:UserPhoto nvarchar(max),变长,可以存放照片、文件等
    • int ,整数型字段。示例:UserAge int 
    • float,浮点数据为近似值。示例:UserResults float ,用于表示浮点数值数据的大致数值数据类型。
    • datetime ,日期型。 示例:CreateDatetime datetime 
    • bit,布尔类型。可以设置true是男生,false是女生

      如果是内容非常多,不确定长度(如文章),可以用:nvarchar(max)

     6、保存表:

     

    *如果要修改表,也要保存,然后刷新一下。

    【提问】

    问:如果表中的标识1、2、3、4……,我将2删除掉,让3、4自动变成2、3可以吗?

    答:不要这么做,我们的项目中,表是和其它表关联的!如果你在这里把2删除了,会让其他关联的表出错的。所以最开始就设定好,不要删除后自动补齐,最好不要删除标识。

    7、用代码建数据库或表:

    新建查询——在代码编辑器里编写——sql语句(不区分大小写)

    1)用以下语句可以建立一个叫Library的数据库:

    create database Library

    go

    use Library

    go

     

    2)用以下语句可以建立一个Users的表,建立时要先选中对应数据库:

    create table Users

    (

    UID int primary key,

    userName nvarchar(20) not null,

    userPwd  nvarchar(20) not null

    )

     8、删除数据库:

    如果直接右键删除数据库,会提示错误,“数据库正在被使用”。

    所以需要重启服务后,再删除。

    *重启服务方法:

    控制面板——管理工具——服务——找到对应服务重启以下。(或者sql的配置管理器里面也可以)

    在平时做项目时,如果数据库挂了,就需要重启一下服务。

     9、加入数据:(一般不会用手动的方式,而是写一个程序读取数据)

    手动加入数据方法:右键点击表,选择编辑前200行,对表中的各个项目输入数据,写完后点一下执行按钮,此时表中就有数据了。

    *如果想改已经写好的表里的项目(列名),保存后有时候会报错,此时:工具——选项——将箭头所指项目的勾去掉。

     

     10、查询语句:(select)

    1、查询全部         select * from StuInfor(表名字)

     2、查询某个字段   select 字段 *from StuInfor(表名字)

     3、筛选查询  (where...and)    select *from StuInfor where Country='中国'    select *from StuInfor where Country='中国' and Sex='女'

     4、筛选查询  (where...or)      select *from StuInfor where Country='中国' and (ClassName='一班'or ClassName='二班')  

                                                   select *from StuInfor where Country='中国' and ClassName in ('一班','二班')

     5、排序(order by)  select *from StuInfor order by age desc (降序)

     6、前几个用Top  :    select top 3  * from StuInfor order by age desc 

                                    select top 3 stuName from stuInfor order by age desc              

     7、区间查询: select * from stuInfor where age >=21 and age <=28

                          select * from stuInfor where age between 21 and 28

    8、记录数查询 count(*)  select count(*) as stuCount from stuInfor where className='一班'

    9、分组查询 group by   select count(*) as stuCount,country from stuInfor group by country

    10、group by...having:  select count(*) as stuCount,country  from stuInfor group by country having  count(*)>2

    11、模糊匹配 like:select * from stuInfor where stuName like '小%'  以...开头

                                select * from stuInfor where stuName like '%小'  以...结尾

                                select * from stuInfor where stuName like '%小%'  中间包含

    12、求和sum: select sum(age)from stuInfor

    13、最大max、最小min:select max(age)from stuInfor  select min(age)from stuInfor

    14、平均值:select * from stuInfor where age >(select avg(age)from stuInfor ) 

    15、联合查询:select SI.StuId,SI.StuName,SI.Age,SI.Country,SI.Sex,PE.EnglishScore,PE.ChineseScore from StuInfor SI left join Score PE on SI.StuId = PE.StuId  (right join  /  inner join 常用)

     11、新增语句:(Insert into)

    • insert into BOOK(bookName,bookPrice,bookAuthors) values('C#基础','35','ji')

      (插入bookName,bookPrice,bookAuthors这三个字段的值分别是:'C#基础','35','ji')

     12、更新语句:(Update...set...[where]) 

    • update BOOK set bookPrice=30 where bookName='C#基础'

      (修改BOOK表,让bookName为C#基础的项中的bookPrice=30)

     13、删除语句(delete from...)

    • delete from BOOK where bookName='C#基础'

      (删除Book表中,bookName='C#基础'的所有记录行)

     14、联合查询:

    1)inner join
    select * from A inner join B on A.aID = B.bID  :以两表ID为标准,查询出A、B表都具备的项

    2)right join
    select * from A right join B on A.aID = B.bID  :以B表bID为标准,B表全部显示,A表中没有对应值的显示null

    3)left join
    select * from A left join B on A.aID = B.bID   :以A表aID为标准,B表全部显示,A表中没有对应值的显示null

  • 相关阅读:
    Java8中利用stream对map集合进行过滤的方法
    安装数据库MySQL,启动时报错 服务没有响应控制功能 的解决办法
    mysql 安装时 失败,提示 因为计算机中丢失 msvcp140.dll
    复习一下数学排列组合公式的原理
    java如何进行排列组合运算
    Redis 分布式锁:使用Set+lua替代 setnx
    深入详解Go的channel底层实现原理【图解】
    MYSQL MVCC实现原理详解
    聚簇索引和非聚簇索引,全在这!!!
    深度解密Go语言之 map
  • 原文地址:https://www.cnblogs.com/admi88/p/4893359.html
Copyright © 2020-2023  润新知