zoukankan      html  css  js  c++  java
  • MySQL(一)

    一、数据库简介

    1、数据库

    数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。

    2、数据库管理系统软件

    数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。

    数据库管理系统是数据库系统的核心,是管理数据库的软件。数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。

    常见的数据库管理软件:甲骨文的oracle,IBM的db2,sql server, Access,Mysql(开源,免费,跨平台).

        文件        数据库

    第一行内容        字段
    其它内容      记录

    一行内容      一条记录
    一个文件      一张表
    一个文件夹     一个库

    #数据库管理系统:mysql,orcale,db2,mariadb,sql server(关系型数据库)
    打开连接
    切到一个文件下/找到一个文件/打开文件/读写记录/关闭文件(优化,加锁处理,权限认证)
    关闭连接


    #ps:
    安装数据库指的是:数据库管理系统
    创建数据库指的是:创建一个“文件夹”


    非关系型数据库:数据都是以key=value的形式存放的


    #数据库服务器:安装有数据库管理系统软件的一台机器

    3、mysql基本使用

    #1 登录
    mysql -uroot -p123

    #2 查看用户
    select user();

    #3 退出
    quit
    exit
    q

    #4 查看帮助信息
    help create user;

    #4 创建帐号
    create user 'egon'@'192.168.32.*' identified by '123';
    create user 'egon'@'192.168.32.3' identified by '123';
    create user 'egon'@'%' identified by '123';

    #6 授权
    grant all privileges
    grant all on db1.t1 to 'egon'@'%';
    grant all on *.* to 'egon'@'%';

    flush privileges;

    #7 创建帐号同时授权
    grant all on *.* to 'alex'@'%' identified by '123';
    flush privileges;

    #8 远程连接mysql
    mysql -u wang -p123 -h 192.168.11.110

    #9 查看所有的数据库
    show databases;

    #10 修改密码
    命令行>mysqladmin -uroot -p'123' password 123
    命令行>mysql -uroot -p123


    #11 破解密码
    #杀死mysqld服务
    tasklist |findstr mysqld       # Liunx:ps aux | grep mysqld      查找mysql启动的进程端口
    mysqld.exe 4980 Console  456,832 K
    tskill mysqld            #Liunx:pkill mysqld       直接杀死进程
    taskkill -f /PID 4980         #Liunx:kill -9 4980        杀死进程为4980的进程

    mysqld --skip-grant-tables #跳过授权表启动
    mysql> update mysql.user set password=password('') where user='root' and host='localhost';   修改密码

    mysql> flush privileges;   刷新的意思
    C:UsersAdministrator>tskill mysqld
    C:UsersAdministrator>tasklist |findstr mysql
    C:UsersAdministrator>mysqld
    #重新以新密码登录

    二、MySQL数据库(文件夹)的操作 

    1、sql语句

      sql是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

      在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sql。

    2、sql规范

    <1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;

    <2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。

    <3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。

    <4> 注释:单行注释:--

      多行注释:/*......*/

    <5>sql语句可以折行操作

    <6> DDL,DML和DCL

    -- --SQL中 DML、DDL、DCL区别 .
    
    -- -- DML(data manipulation language):
    --    它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的
    --    数据进行操作的语言
    -- 
    -- -- DDL(data definition language):
    --    DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)
    --    的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
    -- 
    -- -- DCL(Data Control Language):
    --    是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)
    --    语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权
    --    力执行DCL

    注意:

    (1)在同一张表中,字段名是不能相同

    (2)宽度和约束条件可选

    (3)字段名和类型名是必须要有的

    3、关于数据库(文件夹)操作的sql语句

    - 增加(创建数据库)
      create database db1 charset utf8; 创建名为db1字符编码为utf8
      create database if not exists db1 charset utf8; 没有我就创建,有了就不创建了
      如果不加if not exists的话,创建重名的数据库就会报错,反之不会
    - 查看数据库
      show databases; 查看所有数据库
      show create database db1; 查看数据库名为db1的数据库
    - 修改数据库
      alter database db1 charset gbk; 修改数据库名为db1的字符编码为gbk
    - 删出数据库
      drop database db1;

    4、数据表(文件)的增删改查

    切换到某一个库(文件夹
      use db1;  --注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
      select database();  #查看当前所在的库
    - 增加(添加)表
    create table t1(id int,name char(10),age int(4))engine=innodb default charset utf8;  #最后一个字段一定不要加逗号
      int(整数)不指定默认11位,char(字符串)不指定默认1个字符,最大255
    - 查看表信息
      show tables; 查看所有的表
      show create table t1; 查看表t1的信息
      desc t1;#查看表结构
    - 修改表结构

      alter table t1 charset gbk;  修改该表的字符编码为gbk
      alter table t1 add sex char; 添加一个字段
      alter table t1 drop sex; 删除一个字段
      alter table t1 modify sex char(6); 只可以改类型和类型的长度
      alter table t1 change sex Sex char(6); 连字段名都可以改

      rename table t1 to t2;   修改表名t1为t2

    - 删除表
      drop table table66;

    5、表记录的操作
    - 增(添)加记录
      insert into db1.t1(id,name,age,Sex) values
        --(1,'egon1',18,'male'),
        --(2,'egon2',28,'male'),
        --(3,'egon3',38,'male'),
        --(4,'egon4',48,'male');
      写了是一一对应,不写(id,name,age,Sex)默认是表字段顺序

      insert into db1.t1(id,name) values(5,'egon5'); 添加啊一条记录,后面字段可为空


    - 查询表记录
      select name,id from db1.t1; 查看name和id的字段
      select * from db1.t1; 查看所有字段的值
    - 修改表记录
      update db1.t1 set name='EGON4'; 修改字段,所有的都改了
      update db1.t1 set name='alexsb' where id=5; 修改id为5的name
      update db1.t1 set name='aaaa' where Sex='male'; 修改Sex='male'的name
    - 删除表记录
      delete from db1.t1; #仅仅只有删除记录的效果,没有把表重置到初始状态的功能,主键还在(会累加)
      truncate db1.t1; #清空+重置

    - 删除某一条记录

      delete from db1.t1 where id=3;   删除id为3的这条记录
      delete from db1.t1 where name='dddd';


    #自增id
    create table t1(id int not null unique auto_increment,name char(4)); #自增的字段必须是非空且唯一
    create table t1(id int primary key,name char(4));

    效果如下:

    insert into db1.t1(name) values
    ('egon1'),
    ('egon2'),
    ('egon3'),
    ('egon4');

     

    练习:

    一、老师表:teacher

     修改字段id为tid

     

    二、班级表:class

     三、课程表:course

    四、学生表:student

    五、成绩表:score

  • 相关阅读:
    Impala 加载Hive的UDF
    在编译器中调试spark程序处理
    转:Kafka 客户端TimeoutException问题之坑
    Apache Kafka系列(五) Kafka Connect及FileConnector示例
    Apache Kafka系列(四) 多线程Consumer方案
    Apache Kafka系列(三) Java API使用
    Apache Kafka系列(二) 命令行工具(CLI)
    ajax异步刷新
    Mybaties下的分页功能的实现
    读取配置文件的方法
  • 原文地址:https://www.cnblogs.com/sunxiansheng/p/7694897.html
Copyright © 2011-2022 走看看