数据库基础语句学习

                  在sql语句中所有的日期类型和字符串类型都要用单引号( ‘‘ )括起来

1、    DDL(数据定义语言):  create  database  my_test;  //创建一个my_test数据库。

                  use  my_test;       //使用my_test数据库。

                  create  table  students  ( id int(10) , name varchar(20) );  //创建一个带 id name 两个字段的students表。

                  drop table students;    //删除表students

                  rename table students to student;    //将表名students改为student

                  show tables;   //查看所有表

                  desc students;   //查看表students的所有字段

                  alter table students add gender varchar(20);  //给表students创建一个类型为varchar(20)的字段gender

                  alter table students drop gender;    //删除表students的gender字段

                  alter table students modify gender varchar(10);  //将字段gender的类型varchar(10)修改为varchar(20)

                  alter table students change name newname varchar(10);  //将字段name修改为类型为varchar(10)的字段newname

2、    DML(数据操作语言):  insert into students (id ,name ,gender) values (1, ‘zs‘, ‘男‘) , (2, ‘lili‘, ‘女‘);  //在表students中插入两条数据,字段和数据的顺序必须一致

                  delete from students where name=‘zs‘;    //删除name为zs的一条数据

                  delete from students;   //删除表students的数据 (数据可以找回)

                  truncate table students;    //删除表students的数据,重新创建一张表 (数据不能找回)

                  select * from students;    //查询表students中的所有数据

                  update students set name = ww;    //将name全改为ww

                  update students set name=zs , gender=‘男‘ where id=2;    //将id为2的name跟新为zs gender跟新为男

                                    修改数据库密码

                  use mysql;  //(进入mysql数据库)

                  show tables;

                  desc user;  (查看有没有password字段,如果有)

                  update user set password = password(‘1234‘)  where user = ‘root‘;

                  flush privileges;    // 刷新MySQL系统权限相关表(很重要)

3、   DQL(数据查询语言):   通过查询语句查询出来的数据以表的形式展示,我们称这个表为虚拟结果集,存放在内存中。结果集为一张虚拟表。

                  DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

                  select * from students;  //查询表students所有的数据。*表示所有字段,*也可以换成别的字段

                  select id,name from students;  //查询表students中的id,name字段的数据。

                  select * from students where gender=‘男‘ and/or age=25;  //and表示且,or表示或者

                  select * from students where id in(1,2,3);     //in(set) set固定值查询  

                                    模糊查询  一个_代表一个字符 %代表任意字符

                  select * from students where name like ‘_‘;   //模糊查询,查询名字有_个数的字符的数据

                  select * from students where name like ‘%s%‘;  //查询名字带有s的名字的数据

                  select distinct name from students;    //  distinct去掉重复的,将students表中重复的name去掉后输出name字段数据

                  select *, ifnull (id,0)+ifnull (score,0) as total from students;  //将两个数值型字段id和score加一起变成一个total字段(as表示起别名,as可以省略)

                                          

                        (排序) select * from students order by salary asc/desc,id asc/desc; //根据salary的大小进行 升/降 序排列,如果salary一样,则根据id的大小升/降排列

            (聚合函数) select count(*) from students (where salary>2500);  //count 查询表中记录数 (统计salary大于2500的记录数) (统计不为null的记录行数)

                  select sum(salary) ,sum(manage) from students;    //求和

                  select avg(salary) from students;    //求平均值

                  select max(salary) , min(salary) from students;  //最大最小值

           (分组查询) select gender, group_concat(name) from students group by gender;  //根据gender分组并把每组的name显示出来

                  select  depatment , group_concat(salary) , count(*)  from  tudents  where  salary > 1500  group by depatment; //查询每个depatment中salary大于1500的个数

                  select depatment , group_concat(salary) ,sum(salary) from students group by depatment having sum(salary) >= 9000; //having作用与where一样,但只能用与group by 之后

                  select depatment , grop_concat(salary) , sum(salary)  from  students  where  salary > 2000 group by  depatment  having  sum(salary) > 6000  order  by

                  -----  sum(salary)  asc/desc; //查询salary大于2000,工资总和大于6000的部门的工资和 并按降/升 序排列。( where  >  group  by  >  having  >  order  by >  limit )

4、数据的完整性:  保证用户输入的数据保存到数据库中是正确的。 在创建表是给表添加约束。 完整性分为:实体完整性、域完整性、引用完整性。

    4.1、  实体完整性:   概念:  一条数据为一个实体。

                作用:  标识每一行数据不重复,行级约束

                约束类型:  主键约束、唯一约束、自动增长约束

                    主键约束(primary  key):每个表中有一个主键,数据唯一且不能为null

                                添加方式:<1> create table person ( id  bigint primary key, name varchar(20) );

                                     <2> create table person ( id bigint, name varchar(20), primary key ( id )  );

                                     <3> create  table  person  ( id bigint  ,  xuehao  int ( 10 ) ,  name  varchar(20) , primary  key ( id ,xuehao) );   //(联合主键)

                    唯一约束(unique):数据不能重复,但可以为null。

                                添加方式:  create table person (  id  bigint primary key,name varchar(20) unique );

                    自动增长列(auto  increment):指定列的数据自动增长,即使数据删除,还是从删除的数据继续往下。

                                添加方式:  create table person (  id bigint primary key auto_increment,name varchar(20) unique);

    4、2  域完整性:  使用:限制此单元格的数据正确,不对照此列的其他单元格比较。域代表当前单元格。

               与完整性约束:<1>:数据类型:数值类型,字符串类型,日期类型。

                      <2>:非空约束(no  null):create table person  (  id int primary key auto_increment, name varchar(20) unique not null );

                      <3>:默认值约束(default):create  table  person( id  int  primary  key  auto_increment , name  varchar(20)  unique , gender  varchar(10)  default  ‘男‘ );

    4、3  参照完整性:  概念:表与表之间的一种对应关系,通过设置两表之间的主键、外键关系,或编写两表之间的触发器来实现。

        表与表建立关系的条件:量表必须都是InnoDB类型、数据库的主键和外键的类型必须要一致

5、多表查询:  5、1  <1>   一对一、一对多、多对多(要建立一个中间表)给中间表的两个字段都插入外键建立关系表。

                              

            <2>   为什么要拆分表:  避免大量冗余数据的出现。

        5、2 多表查询: 5.2.1 合并结果集:   <1> 合并结果集: 把两个select语句的查询结果合并在一起

                            <2> 方式: 1、 union:合并时去除重复记录。  2、union all:合并时不去重

                            <3> 用法: select * from a union ( all ) select * from b; 

                            <4> 注意事项:被合并的两个结果:列数、列类型必须相同。

                 5.2.2 连接查询:     概念:也叫跨表查询,需要关联多个表进行查询。

                            笛卡尔集:

                            多表联查,保证数据正确:在查询时要把主键和外键保持一致。  :  select * from stu st ,teach tc where st.id=tc.sid;

                            根据连接方式:<1> 内连接: 等值连接 : select * from stu st ( inner ) join teach tc on st.id=tc.sid;

                                   <2> 外连接  左连接:左边的数据全查出来 left (outer) join on

                                           右连接:右边的数据全查出来 right (outer) join on

                                   <3> 自然连接(natural):不用写条件;要求:两张连接的表中列名称和类型完全一致的列作为条件。(会去除相同的列)

                                                select * from stu natural join score;

6、子查询:    概念:  一个select语句中包含另一个完整的select语句;或两个以上select,那么就是子查询语句了。

        子查询出现的位置:<1> where之后,把select查询出来的结果当成另一个select的条件值。

                    select ename,salary from emp where deptno=( select deptno from emp where ename=‘项羽‘ );

                 <2> from之后,把查询的结果当成一个新表。

                           

                                        

                  

                  

                  

  

                  

                  

                  

                  

                  

                  

原文地址:https://www.cnblogs.com/java2018819/p/9876075.html

时间: 2024-08-29 20:28:32

数据库基础语句学习的相关文章

团队项目----数据库SQL语句学习总结与实践

在本次团队项目编程过程中,我主要负责数据库的设计与建立:在知识不够,能力不足,无数据库设计经验的情况下,对SQL语句进行了较为深入的学习,今天将成果整理之后,写了这篇博客,欢迎大家指出我的不足. 首先,介绍一下Windows下使用DOS命令进入MySQL数据库 1.桌面左下角windows图标--搜索框内输入cmd,结果如图所示,点击cmd.exe,或者使用快捷键Windows键(在键盘上有个Windows标志的按键)+R输入cmd后回车. 2.启动mysql数据库:在出来的DOS命令窗口中输入

MySQL数据库基础知识学习笔记(一)

1.MySQL基础与sql语句实战 MySQL是一种关系型数据库管理系统,在互联网公司里非常流行.Linux下用yum命令安装 实操:连接数据库172.16.41.89登录mysql命令:Mysql -u root -p 回车,然后输入密码 查看数据库:Show databases; 新建数据库:Create databases xiaoning defsult charset=utf8;然后再次show databases 查看一下,xiaoning 已经被创建 语句:Create table

oracle基础语句学习

1.寻找公司所有部门信息 select * from dept; 2.寻找特定列 select dept_name from dept; 3.使用列别名 基本书写方法:列名 列别名 列名 as 列别名 以下三种情况,列别名两侧需要添加双引号(""): 列别名中包含有空格. 列别名中要求区分大小写. 列别名中包含有特殊字符. select emp_id id,last_name as emp_name,salary "Salary",(400+salary)*12 &

数据库基础理解学习-Mysql

简介 数据库,现代化的数据存储存储手段,是一种特殊的文件,其中存储着需要的数据. 特点: 持久化存储读写速度极高保证数据的有效性对程序支持性非常好,容易扩展 Mysql(1)具有数据完整性: 一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中.在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型.约束. 约束说明: 主键primary key:物理上存储的顺序:非空not null:此字段不允许填写空值:惟一uniqu

SQL server 数据库基础语句

上篇介绍的是鼠标操作 遗漏两个知识: 主外键 两个列 数据类型 必须一致    //int类型不能约束nvarchar 类型      varchar类型不能约束nvarchar类型 varchar(max)  不能作为主键列   只有定好长度了才可以 表名,数据库名不允许使用汉字 下面是语句操作 进入操作文件→点开   新建查询 出来个文本 语句(不分大小写):  (写完语句创建数据库  表 执行的完记得刷新下) 创建数据库: create  datacse 数据库名 例如:     crea

mysql数据库基础语句训练题

SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for course -- ---------------------------- DROP TABLE IF EXISTS `course`; CREATE TABLE `course` ( `cno` varchar(10) DEFAULT NULL, `Cname` varchar(255) DEFAULT NULL, `tno` va

数据库SQL语句学习笔记(6)-使用函数处理数据

1.SQL也可以用函数来处理数据,函数一般是在数据上执行的,为数据的转换和处理提供了方便.但是每一个数据库管理系统(DBMS)都有特定的函数,事实上,只有少数几个函数被所有的DBMS等同地支持.例如, MYSQL中用SUBSTRING()函数提取字符串的组成部分,Access用MID() MYSQL中用CONVERT()函数进行数据类型转换,DB2使用CAST() MYSQL使用CURDATE()函数获取当前日期,SQLite使用DATE() 结论:SQL语句不是可移植的 2.SQL使用函数 文

数据库SQL语句学习笔记(2)-检索数据库

首先设置好此连载笔记的演示所用的表 CREATE database sells; #创建名叫sells的数据库 USE sells; #告诉mysql,我要开始使用这个数据库了 CREATE TABLE Customers #创建Customers表 ( cust_id char(10) NOT NULL , cust_name char(50) NOT NULL , cust_address char(50) NULL , cust_city char(50) NULL , cust_stat

数据库之语句学习(增删查改)

数据库语句分为三大类:数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL) DDL:CREATE DATABASE xiaotest 创建一个数据库名为xiaotest的数据库.       drop database  xiaotest  删除一个数据库名为xiaotest的数据库.       dalter database  xiaotest modify  name=xiao ;此命令执行错误,暂未找到解决方法  create table youxi(id int ,a