• 数据库及MySQL基础(1)


    1、数据库概述

    关系型数据库:面对关系,Java面向对象。

    ·常见数据库

    Oracle(神喻):甲骨文
    DB2:IBM
    SQL Server:微软
    Sybase:赛尔斯
    MySQL:甲骨文,最早是开源的SUN;
    

    1.1理解数据库

    ·RDBMS-Relational database management system关系型数据库管理系统

    RDBMS-database-table-表结构&表记录

    RDBMS=管理员(Manager+仓库(database

    database=Ntable

    table=表结构(定义列名称和类型)和表记录(真实数据)

     

    表结构

     

    表记录

    1.2 应用程序与数据库

    应用程序使用数据库完成对数据的存储!

    备注:数据库的端口为3306

    2、数据库基本操作

    /usr/bin/mysqladmin -u root -p shutdown

    数据库停止

    /etc/init.d/mysql start

    数据库启动

    ps -ef|grep mysql

    linuxMySQL数据库状态查看

    mysql -uroot -p密码 -h地址

    mysql -uroot -p密码 -h27.0.0.1

    根权限进入数据库,可以开启多个客户端

    quitexit

    退出数据库

    mysqld.exe

    是服务的启动标准(服务器端)

    mysql.exe

    是客户端程序

    my.ini

    配置文件

    USE bookstore;

    进入数据库,大小写都可以但是一般要求标准是大写

    SHOW TABLES;

    显示数据表,注意一定要以【;】结尾

    SHOW DATABASES;

    显示所有数据库名称

    CREATE [IF NOT EXUSTS] 数据库名称

    [CHARSET=utf8]

    如果不存在时创建数据库

    DROP DATABASE 数据库名称;

    删除数据库

    ALTER DATABASE 数据库名

    CHARACTER SET uft8;

    修改数据库编码

    3、SQL语言概述

    3.1,什么是SQL:结构化查询语言(Structured Query Language);

    3.2,SQL的作用:客户端使用SQL语句来操作服务器;

    3.3,SQL标准由国际化标准组织(ISO)制定,对DBMS的统一操作方式;

    3.4,SQL方言,某种数据库有自己特有的控制语句;

    3.5,SQL语法:

    SQL语句可以单行或多行,以分号结尾;

    ②可使用空格和缩进来增强语句的可读性;

    MySQL不区分大小写,建议关键字都写大写;

     

    3.6,SQL语句分类:

    DDLData Definition Language:数据定义语言,用来定义数据库对象:库、表、列等;

    》创建、删除、修改:库、表结构;

    DMLData Manipulation Language:数据操作语言,用来定义数据库记录(数据);

    》增、删、改:表记录(内容)

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

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

    4、DDL

    SHOW DATABASES;

    USE 数据库名称;

    CREATE DATABASE mufasa;//创建数据库

    1064错误语法错误

    4.1、数据类型

    int整型;

    double浮点型,例如double(5,2)表示最多五位,其中必须有2位小数,即最大999.99;

    decimal浮点型,在表单钱方面使用该类型,因为不会出现精度缺少问题;

    char固定长度字符串,char(255)长度不够的自动加空格补足!

    varchar可变长度字符串类型,varchar(65535)utf8汉字一个3个字节byte

    text(clob):字符串类型

    ——tinytext 2^8-1B

    ——text 2^16

    ——mediumtext 2^24

    ——longtext 2^32-1B~4GB-1B内存大小

    varbinary

    tinyblog

    blog 2^16-1B

    mediublog 2^24

    longblog 2^32

    date日期类型,yyyy-mm-dd;

    time时间类型,hh:mm:ss

    timestamp时间戳;

    4.2、表操作

    CREATE TABLE [IF NOT EXISTS] 表名(列名 列类型,列名 列类型,....);

    SHOW TABLES; 显示表

    DESC 表名称; 显示表结构

    DROP TABLE 表名称; 删除表

    ALTER TABLE 表名 ADD(列名 列类型,列名 列类型,列名 列类型); 增加列

    ALTER TABLE 表名 MODIFY 列名 列类型; 修改列类型

    ALTER TABLE 表名 DROP 列名;

    ALTER TABLE 原表名 RENAME TO 新表名;

    5、DML

    DQL:SELECT * FROM 表名;查询表中的数据

    DML(数据操作语言,它是对表记录的操作:增、删、改!)

     

    5.1,插入数据

     

    INSERT INTO 表名 (列名1,列名2,...) VALUES (列值1,列值2,...);//对应列名称插入

    INSERT INTO 表名 VALUES(列值1,列值2);//值的顺序,必须与给出的列的顺序相同

    INSERT INTO tb_stu (number,name,age,gender,SCORE) VALUES ('mufasa_0007','ZSS',20,'female',75);

    INSERT INTO tb_stu (number,name) VALUES ('mufasa_0002','zhangsan');

    INSERT INTO tb_stu (number,name,age,gender) VALUES ('mufasa_0001','万雨',25,'');//中文易出错

    INSERT INTO tb_stu VALUES('mufasa_0003','wanyu',30,'man');//与原始列相同,不建议使用可读性差

     

    5.2,修改数据

    UPDATE 表名 SET 列名=列值,列名=列值;//全部数据都修改

    UPDATE 表名 SET 列名=列值 WHERE 列名=列值;

    范例:UPDATE tb_stu SET name='mufasa' WHERE number='mufasa_0001';

    条件(条件可选的):

    >条件必须是一个boolean类型的值或表达式;

    >运算符=、!=<>><>=<=BETWEEN...ANDIN(...)IS NULLNOTORAND

    注意:列名=NULL;永远是false,可以使用IS NULL替换

     

    5.3,删除数据

    DELETE FROM 表名 WHRER 表中的条件数据;

    DELETE FROM tb_stu WHERE number='mufasa_0001';//删除特定一项

    DELETE FROM tb_stu;//全部删除

    6、DCL

    一个项目创建一个用户!一个项目对应的数据库只有一个!

    6.1,创建用户

    CREATE USER 用户名@IP地址 IDENTIFIED BY 'cipher';

    CREATE USER 用户名@'%' IDENTIFIED BY 'cipher';//所有IP地址都可使用

    范例:CREATE USER user@'%' IDENTIFIED BY 'cipher';

     

    6.2,给用户权限

    GRANT 权限1,...权限n ON 数据库.* TO 用户名@IP地址;

    范例:GRANT SELECT,CREATE,ALTER,DELETE,UPDATE ON mufasa.* TO user@'%';

    范例:GRANT ALL ON mufasa.* TO user@'%';

     

    6.3,撤销授权

    REVOKE 权限1,...权限n ON 数据库.* FROM 用户名@IP地址;

    >撤销指定用户在指定数据库上的制定权限

    >例如:REVOKE CREATE,ALTER,DROP, ON mufasa.* FROM user@'%';

    范例:REVOKE SELECT ON mufasa.* FROM user@'%';

     

    6.4,查看权限

    SHOW GRENTS FOR 用户名@IP地址;

    范例:SHOW GRANTS FOR user@'%';

     

    6.5,删除用户

    DROP USER 用户名@IP地址;

     

    7、DQL

    DQL-数据库查询语言

    查询不会修改数据库表记录

    7.1,基本查询

    1)查询所有列

    SELECT * FROM 表名;

    范例:SELECT  * FROM tb_stu;

     

    2)查询指定列

    SELECT 列名称1,列名称2 FROM 表名;

    范例:SELECT name FROM tb_stu;//查看name这一列的数据值

     

    3)完全重复的记录只一次

    SELECT DISTINCT 列名1,列名2 FROM 表名;

    范例:SELECT DISTINCT name FROM tb_stu;

    查询结果去重,显示;

     

    4)列运算

    ①数据类型的可以进行加【+】、减【-】、乘【*】、除【/;

    SELECT *,age*2 FROM tb_stu;

    SELECT *,IFNULL(age,0)*2 FROM tb_stu;

     

    ②字符串可以进行连续运算

    SELECT CONCAT(列名1,列名2) FROM 表名;

    范例:SELECT CONCAT(name,gender) FROM tb_stu;

     

    ③转换NULL

    IFNULL(列名,想要的显示)

     

    ④给列起别名

    SELECT 列名 [AS] 别名 FROM 表名;//其中AS可以选,标准是加上

    范例:SELECT name AS NAME FROM tb_stu;

     

    7.2,条件控制

    1)条件查询

    SELECT * FROM tb_stu WHERE name in ('wanyu','mufasa');//定向选择

    SELECT * FROM tb_stu WHERE age BETWEEN 20 AND 30;//数值范围查询,包含!!

    SELECT * FROM tb_stu WHERE age IS NOT NULL;//非空查询

    SELECT * FROM tb_stu WHERE age=30;//非空查询

     

    2)模糊查询

    SELECT * FROM tb_stu WHERE name LIKE 'w____';//查询w开头,定长度模糊查询

    SELECT * FROM tb_stu WHERE name LIKE '___';//查询三个长度的数值

    SELECT * FROM tb_stu WHERE name LIKE '%u';//查询u结尾数值,所有长度都可以查出

    SELECT * FROM tb_stu WHERE name LIKE '%u%';//查询有u字符的数值,开头结尾中间都行

     

    7.3,排序

    SELECT * FROM tb_stu ORDER BY age;//通过age(默认升序)排序显示

    SELECT * FROM tb_stu ORDER BY age ASC;//升序排列

    SELECT * FROM tb_stu ORDER BY age DESC;//降序排列

    SELECT * FROM tb_stu ORDER BY IFNULL(age,25) ASC, score DESC;//多列联合排序

     

    7.4,聚合函数

    SELECT COUNT(*) FROM tb_stu;//查询数据行非NULL的总数

    SELECT COUNT(age) FROM tb_stu;//查询某列中非NULL个数

    SELECT COUNT(DISTINCT age) FROM tb_stu;//查询某列非NULL、非重复个数

    SELECT COUNT(4) FROM tb_stu;//查询第1列的个数与【*】效果相同

     

    SELECT SUM(score) FROM tb_stu;//求和查询

    SELECT MAX(score) FROM tb_stu;//求最大

    SELECT MIN(score) FROM tb_stu;//求最小

    SELECT AVG(score) FROM tb_stu;//求均值

     

    SELECT count(*) AS 人数,SUM(score) AS 汇总分数,MAX(score) AS 最高分数,MIN(score) AS 最低分数,AVG(score) AS 平均分数 FROM tb_stu;

     

    7.5,分组查询

    SELECT gender,count(*) FROM tb_stu GROUP BY gender;

    //主信息只有两列,1分组列,2集合函数

    SELECT gender,count(*),MAX(score) FROM tb_stu GROUP BY gender;//显示最大值

    SELECT gender,count(*),MIN(score) FROM tb_stu WHERE score>80 GROUP BY gender;//先验条件

    SELECT gender,count(*),MIN(score) FROM tb_stu WHERE score>80 GROUP BY gender having count(*)>=2;

     

    执行顺序:SELECT,FROM,WHERE,GROUP BY,HAVING,ORDER BY,

     

    7.6,limit子句(方言)

    LIMIT用来限定查询结果的起始行,以及总数行。

    例如:查询起始行为第2行,一共查询3行记录

    SELECT * FROM tb_stu LIMIT 2,3;

     

    ①一页的记录数为10行;②查询第3页;

    SELECT * FROM tb_stu LIMIT (3-1)*10,10;

  • 相关阅读:
    Enumerable类
    富客户端
    Entity Framework
    使用C库函数写文件出错
    VC 打开目录 打开上次打开目录
    boost_1_45_0安装
    boost中bimap双向映射的初级学习
    VS2008安装失败
    最近使用文档, 最近保存文档, 最近运行记录
    IE升级为8.0后, VS2008出现Internet Explorer脚本错误对话框
  • 原文地址:https://www.cnblogs.com/Mufasa/p/11110283.html
Copyright © 2020-2023  润新知