首页 > 开发 > 综合 > 正文

sql语法 学习了解

2024-07-21 02:52:16
字体:
来源:转载
供稿:网友
sql 的分类:    DDL: 数据定义语言  create drop alter             DML:  数据操作语言   记录    DQL:数据查询语言 : 非官方的  查询语句    DCL:数据控制语言  :  事物,管理net start MySQLmysql -u用户名 -p密码DDL: 数据库定义语言                创建数据库: create database 数据库名称;           删除数据库:drop database 数据库名称;        常用命令:  查看所有数据库 :  show databases;                             切换或者使用数据库:  user 数据库名称;        操作表:                        创建表: create table 表名(字段描述,字段名称);                                       字段描述: 字段名称,字段类型  [约束 ]                                   create table user ( id Int  PRimary key  auto_increment , username varchar(20) )                    查看所有表:  show tables;                    查看表结构:  desc  表名;                    看看建表语句: show create table  表名;                    修改表名: alter table 表名(旧表名)  rename  to  表名(新表名);                    添加字段:   alter  table  表名 add [column] 字段描述;                                        例如: alter table user add passWord varchaer(20);                    修改字段名称:   alter table 表名  change  字段名称(旧字段)  字段名称(新字段名称) 字段描述                    修改字段描述: alter  table 表名  modify  字段名称   字段类型 [约束] ;                    删除字段: alter table 表名  drop  字段名;                    删除表:   drop  table  表名;DML: 数据操作语言  关键字  insert  update   delete                    注意: 若字段类型为数字,可以省略引号,尽量别省略              插入:  insert into  表名  values(字段值1,字段值2,字段值n);--默认插入所有字段,必须保证value后的类型和顺序要与键表结构顺序一致                                      insert into 表名 (字段名,字段名)  values(字段值,字段值);--插入指定的值, 必须保证和创表的类型与顺序一致            修改:  update 表名  set 字段名=字段值, 字段名1=字段值  [条件查询] ;             删除: delete from 表名  【where】;DQL: 数据查询语言                select * form 表名  where  group by    having    order by  ase| desc                select * from 表名;        select 字段名1, 字段名2   from  表名;        select  distincet 字段名  from 表名 ;  //  distincet  去重的意思        可以在查询的结果上进行运算,但是不影响数据库里面的值        select 字段名 + 10 from 表名;                起别名(给列或者字段别名)        select 字段名 + 10  新别名  from 表名;            select 字段名 + 10  ’新别名‘  from 表名;              select 字段名 + 10  ·新别名·  from 表名;             条件查询            select *from 表名 where 字段名=value;    select *form 表名 where 字段名 > 20;    select * from 表名  where 字段名 like 匹配规则    匹配个数, 匹配内容      //模糊查询    select * from 表名  where 字段名 like ”__“    占2个位置    select * from 表名  where 字段名 like %龙         select * from 表名  where 字段名 like 龙%    select * from 表名  where 字段名 like %龙%    select *form 表名 where 字段名 = 20 or 字段名 = 30 or  字段名=40;    select *form 表名 where 字段名 in(20,30,40);    select *form 表名 where 字段名 between 20 and 40;    select *from 表名  order by 字段名  (asc升序, desc 降序)    select * from 表名 where 字段名  like ”“  order by    聚合函数 (忽略null值)                 sum()   avg()  max() min() count()    获得总和    select sum(字段名) from 表;        获得平均数    select avg(字段名) form 表名;    round 函数,四舍五入    select round(avg(字段名),2)from 表名;        计算    select count(*) form 表名   获得一共多少条记录    分组  在where 后面  order by前面    where 与 having区别    where 是分组前的数据进行过滤,后面不能使用聚合函数    having是分组后的数据进行过滤, 可以使用聚合函数    select 字段名, count(*) from 表名 group by 字段名  ;      select 字段名, sum(字段名)   from 表名 group by 字段名;     select 字段名, sum(字段名)   from 表名 group by 字段名  having > 200; 数据类型的问题    mysql                java     tinyInt                     byte   smallInt                   short      Int                          int    bigInt                     long         varchar                  varChar/char   (varChar 可变长度  char不可变长度)     int                      boolean    float                     float    double(5,2)           double      注”:double(5,2) 改小数长度为5,小数占2位                                    date                       java.sql.Date   time                        java.sql.Time   timesTamp             java.sql.timesTamp   dateTime  日期加+时间       无                            text (最大4g厂文件)     java.sql.clob()存长文本    blob                             java.sql.blob() 存文二进制文件(电影)约束:         作用:为了保证数据的有效性与完整性        mysql常用约束:  primary  key 主键约束                                    unique  唯一约束                                    not null  非空                                    foreign  key 外键约束        主键约束:  修饰过过的字段唯一非空,一张表只能有一个主键,这个主键可以保函多个字段                            方式1: 键表的同时添加约束          字段名称  字段类型 primary key                                                      方式2: 键表的同时在约束区域添加约束          primary key(字段1,字段2)                                           creat table user (                                                        id int,                                                        username varchar(20),                                                        primary key(id)                                            );                              方式3: 添加完表之后,通过修改表结构,修改主键                                              alter table 表名 add primary key(字段名1,字段名2)  (联合主键)        唯一约束: 被修饰过的字段唯一, 对null值不起作用                            方式1: 键表的同时添加约束          字段名称  字段类型 unique                                                    方式2: 键表的同时在约束区域添加约束     unique(字段1,字段2)                                           creat table user (                                                        id int,                                                        username varchar(20),                                                        unique(id)                                            );                              方式3: 添加完表之后,通过修改表结构,修改主键                                              alter table 表名 add unique(字段名1,字段名2)  (联合主键)    非空约束: 被修饰的字段非空                         creat table user (                                                        id int  not null,                                                        username varchar(20),                                                                                                    );    truncate: 清空表                   格式: truncate 表名;  //清空表,重新创建一张新表                                delete 属于逐条删除    auto_increment : 要求, 被修饰的字段要满足自增,被修饰的字段必须是key,一般是primary key                            多表操作     sql:举例操作:网上商城网上商城的实体:                        1 用户                 2 订单         3 商品          4分类    常见关系:                            一对多关系: 用户和订单  分类和商品            多对多关系: 订单和商品               一对一关系: 丈夫和妻子            ER图,可以描述实体与实体的关系                               一对多关系: 一称之为主表  多称之为 从表   会在多表一份添加一个字段,字段名称称之为主表_id                        与主表的主键类型保持一致,我们称之为外键    用户和订单列表:                用户表:  create  table user(                                    id  int primary  key auto_increment,                                    userName  varchar(20)                            )                订单列表                                 create  table orders(                                    id  int auto_increment,                                    totlePrice double,                                    user_id int,                                                             )                  添加外键约束:在多表的一方添加约束                   alter  table 多表名称  add foreign key (外键名称) reference 一表名称(主键)                   alter table orders add foreight key(user_id)  reference  user(id)                       添加了外键之后又如下特点,主表中不能删除从表中已经引用的数据 ,从表中不能添加主表        中不存在的数据    多对多关系:商品和订单                         create  table orders(                                    id  int auto_increment,                                    totlePrice double,                                    user_id int,                                                             )                     create  table product(                                    id  int auto_increment,                                    pname varchar(20)                                    Price double,                                                                                                )                                     create  table orderItem(                                                oid  int ,                                    pid  int ,                                                                                            )                在开发中,我们一般引入中间表来表示他们的关系,在中间表中,存放2表的主键,然后一般还会将这个两个主键设置成中间表的联合主键,将多对多变为2个一对多,为了保证数据的一致性,在中间表上添加2个外键即可    alter table orderItem add foreign key(oid) reference orders(id)alter table orderItem add foreign key(pid) refence product(id)多表查询笛卡尔迪: 多张表无条件的联合查询,没有任何意义                    select A表.* ,B表  from  A表,B表;内连接 :                 格式1: 显示的内连接  select A表.* , B表.* from A[inner] join B on AB的链接条件                格式2: 隐示的内连接  select A表.*, B表.* from A ,B  where ab的链接条件     外链接            1 左外链接  select A表.*, B表.* from A表 left[outer] join B表 on 链接条件;                先展示join左边的表的所有数据,根据条件关联查询join 右边的表(b),符合条件的展示出来                不符合的null展示            2 右外链接 select A表.*, B表.* from B表 right [outer] join A表  on 链接条件                先展示join右边的数据,根据条件关联查询join左边的表的数据,符合条件的则展示,不符合        条件则以null显示                                子查询例如:查询用户的订单,没有订单的用户不显示 隐示的内连接: select user.*, order.* from user, orders where user.id=orders.user_id;显示的内连接:select user.*, order.* from user join orders on  user.id=orders.use.id;查询所有用户的订单详情左外连接:   select user.*, order.* from user left join orders on  user.id=orders.use.id;右外链接:  select user.*, orders.* form orders join user on  user.id=orders.use.id;子查询一个查询依赖与另一个查询      例如:查询用户为张三的详情      select *from orders where user_id = (select id from user where username = '张三');      查询出订单价格大于300的用户信息  in 对应多个信息       select * from user where  user_id in (select user_id from orders where totleprice > 300);             查询出订单价格大于300的订单信息及用户信息  as 给表起别名      //内链接      select user.*,order.* from user,orders where user.id = order.user_id and order.price > 300;       //子查询      select user.* , tamp.* from user, (select *from order where pice > 300) as tamp where user.id=tamp.user_id 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表